JS回歸基礎之DOM

2021-10-17 03:20:23 字數 4020 閱讀 4249

dom 可以將任何 html 或 xml 文件描繪成乙個由多層節點構成的結構。節點分為幾種不同的型別,每種型別分別表示文件中不同的資訊及(或)標記。每個節點都擁有各自的特點、資料和方法。

dom1 級定義了乙個 node 介面,該介面將由 dom 中的所有節點型別實現。

每個節點都有乙個 nodetype 屬性,表示節點型別,節點型別由在 node 型別中定義的下列

12 個數值常量來表示,如下所示:

1.1.1 nodename 和 nodevalue 屬性

1.1.2 節點關係

//在 ie8 及之前版本中無效

var arrayofnodes = array.prototype.slice.

call

(somenode.childnodes,0)

;

1.1.3 操作節點

insertbefore()replacechild()removechild()clonenode(): 複製節點

normalize()

document 節點具有下列特徵:

1.2.1 文件的子節點

1.2.2 文件資訊

1.2.3 查詢元素

1.2.4 特殊集合

1.2.5 文件寫入element 節點具有以下特徵:

1.3.1 html 元素

每個 html元素中都存在的下列標準特性:

1.3.2 取得特性

getattribute()

div.id

div.

getattribute

("id"

)

根據h5規範,自定義特性應該加上data- 字首以便驗證,由於style和onclick特性,只有在取得自定義特性時,才會使用getattribute()方法。

1.3.3 設定特性

setattribute(「mycolor」, 「red」)

removeattribute(「mycolor」)

1.3.4 attributes 屬性

attributes 屬性中包含乙個namednodemap,與 nodelist 類似,也是乙個「動態」的集合。

1.3.5 建立元素

document.

createelement

("div"

)

1.3.6 元素的子節點text 節點具有以下特徵:

1.4.1 建立建立文字節點

document.createtextnode()

1.4.2 規範化文字節點

normalize()方法

1.4.3 分割文字節點

splittext()

comment 節點具有下列特徵:

document.createcomment()建立注釋節點

cdatasection 型別只針對基於 xml 的文件,表示的是 cdata 區域。

nodetype 的值為 4;

包含著與文件的 doctype 有關的所有資訊,nodetype 的值為 10;

nodetype 的值為 11;

元素的特性在 dom 中以 attr 型別來表示,nodetype 的值為 2;

對 dom 的兩個主要的擴充套件是selectors api(選擇符 api)和html5。

queryselector()queryselectorall()matchesselector()

childelementcount:返回子元素(不包括文字節點和注釋)的個數;

firstelementchild:指向第乙個子元素;firstchild 的元素版;

lastelementchild:指向最後乙個子元素;lastchild 的元素版;

previouselementsibling:指向前乙個同輩元素;previoussibling 的元素版;

nextelementsibling:指向後乙個同輩元素;nextsibling 的元素版。

解決了空白文字節點的問題。

2.3.1 與類相關的擴充

getelementsbyclassname()classlist屬性

 add(value):將給定的字串值新增到列表中;

 contains(value):表示列表中是否存在給定的值,如果存在則返回 true,否則返回 false;

 remove(value):從列表中刪除給定的字串;

 toggle(value):如果列表中已經存在給定的值,刪除它;如果列表中沒有給定的值,新增它。

//刪除"disabled"類

div.classlist.

remove

("disabled");

//新增"current"類

div.classlist.

add(

"current");

//切換"user"類

div.classlist.

toggle

("user");

//確定元素中是否包含既定的類名

if(div.classlist.

contains

("bd")&&

!div.classlist.

contains

("disabled"))

else

head 屬性

document.head:引用文件的元素

2.3.4 字符集屬性

document.charset

2.3.5 自定義資料屬性

html5 規定可以為元素新增非標準的屬性,但要新增字首data-,目的是為元素提供與渲染無關的資訊,或者提供語義資訊。

2.3.6 插入標記

innerhtml 屬性

outerhtml 屬性

insertadjacenthtml()方法

2.3.7 scrollintoview()方法

方便開發人員更好地控制頁面滾動。

目前沒有成為的 dom 擴充套件的標準,成為專有擴充套件。將來可能會成為標準。說白了就是備胎的意思。

2.4.1 children屬性

和childnodes類似,區別是children只獲取元素子節點

2.4.2 contains()方法

用來判斷某個節點是不是另乙個節點的後代

alert

(document.documentelement.

contains

(document.body));

//true

2.4.3 插入文字

innertext 屬性

outertext 屬性

2.4.5 插入文字

html5 在將scrollintoview()納入規範之後,仍然還有其他幾個專有方法可以在不同的瀏覽器中使用。

document.defaultview.getcomputedstyle(mydiv, null);document.defaultview.getcomputedstyle(mydiv, null);

獲取元素計算後屬性

document.defaultview.

getcomputedstyle

(mydiv,

null

);

js入門 Dom基礎

dom documentobject model,文件物件模型。dom有三個不同的部分。1 核心dom 也是最基礎的文件結構的標準模型 2 xmldom 針對xml文件的標準模型 3 html dom 針對html文件的標準模型 對於乙個新生程式設計師來說。html是什麼,其實並不重要。但是都知道。...

js基礎複習之DOM和文件載入

1.瀏覽器已經為我們提供 文件節點 物件這個物件是window屬性 可以在頁面中直接使用,文件節點代表的是整個網頁 獲取到button物件 var btn document.getelementbyid btn 修改按鈕的文字 btn.innerhtml i m button 2.瀏覽器在載入乙個頁...

JS基礎學習二 DOM

b 獲取節點 b document.getelementbyid nodeid document.getelementsbytagname nodetagname b 樹形操作 b firstchild lastchild childnodes parentnode nextsibling 同級的下...