10. javacript高級程序設計-DOM

1. DOM

DOM(文檔對象模型)是針對HTML和XML文檔的一個API(應用程序接口)

1.1 節點層次

DOM可以將任何HTML和XML文檔描繪成一個由多層節點構成的結構。節點分為幾種不同的類型,每種類型分別表示文檔中不同的信息及標記。

1.1.1 Node類型

DOM1中定義了一個Node接口,該接口由DOM中所有的節點類型實現,這個Node接口在JavaScript中作為Node類型實現。

每個節點都有一個nodeType屬性,因此所有節點類型都共享著相同的基本屬性和方法

每個節點都有一個nodeType屬性,用于表明節點的類型,節點類型由在Node類型中定義的下列12個數值常量來表示,任何節點類型比居其一:

l Node.ELEMENT_NODE(1);

l Node.ATTRIBUTE_NODE(2);

l Node.TEXT_NODE(3)

l Node.CDATA_SECTION_NODE(4)

l Node.ENTITY_REFERENCE_NODE(5)

l Node.ENTITY_NODE(6)

l Node.PROCESSING_INSTRUCTION_NODE(7)

l Node.COMMENT_NODE(8)

l Node.DOCUMENT_NODE(9)

l Node.DOCUMENT_TYPE_NODE(10)

l Node.DOCUMENT_FRAGMENT_NDOE(11)

l Node.NOTATION_NODE(12)

(1). 判斷節點類型

if(someNode.nodeType == 1){

}?????????????????????????????????????????????????

適用所有瀏覽器

(2). nodeName 和 nodeValue,可以了解具體信息,這兩個屬性取決于屬性類型

(3). 節點關系:

  1. childNodes對象,NodeList是一種類數組對象,用于保存一組有序的節點,可以通過位置來訪問這些節點
  2. parentNode屬性,該屬性指向文檔樹中的父節點
  3. previousSibling:前面的兄弟節點
  4. newSibling:后面的兄弟節點
  5. firstChild:第一個子節點
  6. lastChild:最后一個子節點
  7. ownerDocument,該屬性指向表示整個文檔的文檔節點

(4). appendChild():在節點的末尾添加一個節點

hasChildNodes():是否有子節點

insertBefore():在前面插入節點

replaceChild():替換節點

removeChild():移除節點

cloneNode():復制節點

1.1.2 Document類型

l nodeType的值為9

l nodeName的值為 “#document”

l nodeValue的值為null

l parentNode的值為null

l ownerDocument的值為null

l 其子節點可能是一個DocumentType(最多一個),Element(最多一個),ProcessingInstruction或者Comment

常見屬性:

document.body

document.title

document.URL

document.domain

document.referrer

document.getElementById()

document.getElementsByTagName()

document.anchors

document.applets

document.forms

document.images

document.links

1.1.3 Element類型

l nodeType的值為1

l nodeName的值為 元素的簽名值

l nodeValue的值為null

l parentNode的值為Document或Element

l 子節點可能是Element,Text,Comment,ProcessingInstruction,CDATASection或者EntityReference

一般會存在下列屬性:

id,title,lang,dir,className

<div id="id" title="title" lang="lang" dir="dir" class="className"></div>

可以使用getAttribute(),setAttribute()和removeAttribute()來操作屬性

Element類型是使用attributes屬性的的唯一一個DOM節點類型,表示所有的屬性集合。

1.1.4 Text類型

l nodeType的值為3

l nodeName的值為 “#text”

l nodeValue的值為 節點所包含的文本

l parentNode的值為Element

l 沒有子節點

l 可以通過nodeValue屬性或data屬性訪問Text節點中的文本

l appendData(text)

l deleteData(offset,count)

l insertData(offset,text)

l replaceData(offset,count,text)

l splitText(offset)

l substringData(offset,count)

1.1.5 Comment

l nodeType的值為8

l nodeName的值為 “#comment”

l nodeValue的值為 注釋的內容

l parentNode的值為Element或者Document

l 沒有子節點

1.1.6 CDATASection

l nodeType的值為4

l nodeName的值為 “#cdata-section”

l nodeValue的值為 CDATA區域中包含的內容

l parentNode的值為Element或者Document

l 沒有子節點

1.1.7 DocumentType

l nodeType的值為10

l nodeName的值為 doctype的名稱

l nodeValue的值為 null

l parentNode的值為Document

l 沒有子節點

1.1.8 DocumentFragment

l nodeType的值為11

l nodeName的值為 ‘#document-fragment’

l nodeValue的值為null

l parentNode的值為null

l 子節點可能是Element,Text,Comment,ProcessingInstruction,CDATASection或者EntityReference

1.1.9 Attr類型

l nodeType的值為2

l nodeName的值為 特性的名稱

l nodeValue的值為特性的值

l parentNode的值為null

l 沒有子節點

?

1.2 DOM操作技術

1.2.1 動態腳本

????? var script = document.createElement('script');

????? script.type = "text/javascript";

????? script.sec = "io.js";

????? document.body.appendChild(script);

1.2.2 動態樣式

????? var link = document.createElement("link");

????? link.rel = "stylesheet";

????? link.type = "text/css";

????? link.href = "io.css";

????? var head = document.getElementsByTagName("head")[0];

????? head.appendChild(link);

1.2.3 操作表格

<table>屬性和方法

l caption

l tBodies

l tFoot

l tHead

l rows

l createTHead()

l createTFoot()

l createCaption()

l deleteTHead()

l deleteTFoot()

l deleteCaption()

l deleteRow(pos)

l insertRow(pos)

<tbody>屬性和方法

l rows

l deleteRow(pos)

l insertRow(pos)

<tr>屬性和方法

l cells

l deleteCell(pos)

l insertCell()pos

1.2.4 使用NodeList

由于NodeList是動態的,在迭代NodeList時,使用length屬性初始化第二個變量,然后將迭代器與該變量比較

轉載于:https://www.cnblogs.com/SLchuck/p/4490723.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/273277.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/273277.shtml
英文地址,請注明出處:http://en.pswp.cn/news/273277.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

hdu 5045 Contest(狀態壓縮DP)

題解&#xff1a;我們使用一個二位數組dp[i][j]記錄進行到第i個任務時&#xff0c;人組合為j時的最大和&#xff08;這里的j我們用二進制的每位相應一個人&#xff09;。 詳細見代碼&#xff1a; #include <iostream> #include <cstdio> #include <cstring> …

mysql001創建數據庫

-- 注釋&#xff0c;ctrl/ -- 查詢所有數據庫&#xff1b; show DATABASES; -- 創建數據庫; CREATE DATABASE studb; -- 切換數據庫; USE studb; -- 刪除數據庫 DROP DATABASE studb;

mysql002創建表

-- 創建student表 DDL CREATE TABLE stdent( sno int(3), name VARCHAR(55), sex CHAR(2), age int, dtdate date, classname VARCHAR(55), email VARCHAR(55) ) -- 查詢表中數據 DQL SELECT * FROM stdent;

oc基礎-self關鍵字的使用

#import <Foundation/Foundation.h>interface Student : NSObject {int _age;char *_name; } - (void) study; - (void) run; (void) play;(void) run; endimplementation Student - (void) study {NSLog("%s在學習",self->_name);[self run];//若在此調用…

mysql003操作表DDL

-- 查詢表中數據 DQL 注意在mydb數據庫下面 SELECT * FROM stdent; -- 在表中添加一列 DDL -- 新增列 默認添加到最后 ALTER TABLE stdent add score DOUBLE(4,1); -- 新增一列 在表中開頭添加 ALTER TABLE stdent add score2 double(5,1) first; -- 在指定列后面添…

Google Guava學習筆記——基礎工具類Joiner的使用

Guava 中有一些基礎的工具類&#xff0c;如下所列&#xff1a; 1&#xff0c;Joiner 類&#xff1a;根據給定的分隔符把字符串連接到一起。MapJoiner 執行相同的操作&#xff0c;但是針對 Map 的 key 和 value。 2&#xff0c;Splitter 類&#xff1a;與 Joiner 操作相反的類&a…

xampp 無法啟動mysql

Error: could not open single-table tablespace file .\test\dr.ibd 在網上搜索到的解決方案都不管用。結果整合了兩個解決方案&#xff1a; 刪掉xampp/data/ib_logfile0 xampp/data/ib_logfile1 xampp/data/ibdata1 三個文件就好了轉載于:https://www.cnblogs.com/fyydnz/p/4…

mysql005約束.列級別

-- 列級約束 -- sno 主鍵&#xff1a;唯一&#xff0c;不為空&#xff0c;自增 -- name 非空 -- sex 非空&#xff0c;默認值&#xff0c;只有男女 -- age 0-30歲 -- score 非空 -- dtdate 非空 -- classname 非空 -- email唯一 -- 創建表&#xff0c;增加列級約束 …

hdu.1430.魔板(bfs + 康托展開)

魔板 Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 2170 Accepted Submission(s): 455 Problem Description在魔方風靡全球之后不久&#xff0c;Rubik先生發明了它的簡化版——魔板。魔板由8個同樣大小的方…

mysql006添加外鍵約束

-- 添加外鍵 -- 建立主表&#xff0c;班級表 CREATE TABLE class( cno int PRIMARY key auto_increment, cname VARCHAR(55) ) SELECT * FROM class; -- 建立從表&#xff0c;學生表 CREATE table stu( sno int PRIMARY KEY auto_increment, sname VARCHAR(55), sex ch…

Circle-Progress-View

https://github.com/jakob-grabner/Circle-Progress-View 轉載于:https://www.cnblogs.com/eustoma/p/4507476.html

python1.學生管理系統

#定義函數界面 def info_print(): print("請選擇功能-----------") print("1.添加學員") print("2.刪除學員") print("3.修改學員") print("4.查詢學員") print("5.顯示所有學員") print("6.退出系統"…

初學JSP+Servlet常見的錯誤

web編程中常見的錯誤: 一、404(要訪問的資源沒有找到) 1.web程序有沒有部署(將項目到tomcat中) 2.url有沒有寫錯(包括大小寫&#xff0c;包括項目有沒有重命名) 3.有沒有將jsp/html放在WEB-INF 4.如果訪問的是servlet,那么看下web.xml中url-pattern中的配置和你寫的名字是否一致…

python2.面向對象學生管理系統

main.py(程序主入口) #1.導入管理系統模塊 from mangerSystem import * #2.啟動管理系統 #保證是當前文件運行才啟動管理系統&#xff1a;if -- 創建對象并調用run()方法 if __name__"__main__": student_managerStudentManager() student_manager.run() student…

elasticsearch 刪除滿足條件的語句_ELK從入門到還未精通(二)——ElasticSearch上篇

大家好&#xff0c;我是泥腿子安尼特&#xff0c;5個月沒在李佬都公眾號更新文章了。上一篇&#xff0c;大致介紹了作為工具人的我是如何基本使用這一套ELK 系統的。今天就講講這個最重要的E——基于Lucene的搜索引擎ElasticSearch(后面簡稱ES)。最近剛搬家&#xff0c;沒想到隔…

mysql004操作表.增刪改

-- 查詢表中數據 DQL 注意在mydb數據庫下面 SELECT * FROM stdent; -- 新增數據 這種寫法數據的循序和數據庫的字段循序保持一致。 INSERT INTO stdent values (1,"張三","男",25,"2021.1.1","java","123qq.com"); --…

python2.面向對象.學生管理

main.py(程序主入口) #1.導入管理系統模塊 from mangerSystem import * #2.啟動管理系統 #保證是當前文件運行才啟動管理系統&#xff1a;if -- 創建對象并調用run()方法 if __name__"__main__": student_managerStudentManager() student_manager.run() student…

紙板怎么切割光滑_激光切割機大PK!光纖、CO2、YAG,你選誰?!

問&#xff1a;我也是鈑金人&#xff0c;怎么加入組織&#xff1f;答&#xff1a;點標題下方藍字“鈑金家園光纖激光切割機之所以能在市場快速站穩腳跟并且逐步替代傳統切割工藝&#xff0c;是由于其在各方面獨具優勢&#xff0c;那么他到底優秀在哪里呢&#xff1f;我們把CO2激…

mysql007.算數運算.別名.去重.排序

-- 創建DEPT表 CREATE TABLE DEPT( DEPTNO int(2) not null, DNAME VARCHAR(14), LOC VARCHAR(13) ); -- 查詢DEPT表 SELECT * FROM DEPT; -- 修改表&#xff0c;添加主鍵 ALTER TABLE DEPT add CONSTRAINT PK_DEPT PRIMARY KEY(DEPTNO); -- 查詢表結構。 desc DEPT; …

loadrunner11錄制不成功解決方法(收集)

問題一&#xff1a;loadrunner11錄制時events為0的解決辦法 剛安裝好的11.0&#xff0c;系統環境是&#xff1a;WINXPIE8LR11 OR WIN7IE11LR11 1、ie去掉工具—internet選項中->高級—>去掉“啟用第三方瀏覽器擴展”&#xff0c;重啟ie后發現還不行&#xff0c;繼續&…