首頁 > 易卦

javascript自學記錄:Node型別及6個方法

作者:由 人生苦短就用python 發表于 易卦日期:2022-07-03

節點的型別有幾種

javascript自學記錄:Node型別及6個方法

10。1 節點層次

document是文件節點,html是文件元素。

標籤是元素節點;

特性是特性節點;

文件型別是型別節點;

註釋是註釋節點。

10。1。1 Node型別

Node型別下有12種節點型別,可以使用nodeType屬性得到:

alert

(節點名。

nodeType

);

javascript自學記錄:Node型別及6個方法

為了確保跨瀏覽器相容,可使用以下方法檢測:

var

ele

=

ele

。getElementById(

document

);

document

"outer"

//

傳入元素,返回元素型別

(ele) {

function

(ele。

getNodeType

) {

switch

1:

nodeType

=

case

str

"ELEMENT_NODE"

2:

break

=

case

str

"ATTRIBUTE_NODE"

3:

break

=

case

str

"TEXT_NODE"

4:

break

=

case

str

"CDATA_SECTION_NODE"

5:

break

=

case

str

"ENTITY_REFERENCE_NODE"

6:

break

=

case

str

"ENTITY_NODE"

7:

break

=

case

str

"PROCESSING_INSTRUCTION_NODE"

8:

break

=

case

str

"COMMENT_NODE"

9:

break

=

case

str

"DOCUMENT_NODE"

10:

break

=

case

str

"DOCUMENT_TYPE_NODE"

11:

break

=

case

str

"DOCUMENT_FRAGMENT_NODE"

12:

break

=

case

str

}

"NOTATION_NODE"

break

return

}

str

alert

));

對於節點,還有兩個常用的屬性:someNode。nodeName、someNode。nodeValue

以下的js程式碼可得到名稱、值、型別:

getNodeType

=

ele

。getElementById(

ele

);

var ele_p

ele_p

document

);

document

"outer"

alert

ele_p

);

ele_p

nodeName

// 節點名稱,DIV

alert

);

ele_p

節點關係是按樹狀呈現的,每個節點都有一個childNodes屬性,可能透過以下幾種方式訪問子節點:

ele_p

= someNode。

nodeValue

[0];

// 節點值,null

alert

ele_p

= someNode。

ele_p

。item(1);

nodeType

// 節點型別,1-Node.ELEMENT_NODE

var firstChild

= someNode。

firstChild

childNodes

// 第一個子節點

要想將節點轉為陣列,可使用下面的程式碼:

var secondChild

(nodes) {

secondChild

array =

childNodes

// 第二個子節點

{

array =

var count

。slice。call(nodes,0);

}

count

(ex) {

array =

childNodes

();

length

// 子節點總數

i=0,len=nodes。

function

;i

array。push(nodes[i]);

}

}

convertToArray

array;

}

要訪問父節點可使用parentNode屬性,要訪問兄弟節點需要使用previousSibling和nextSibling屬性,子節點中有兩個特殊的節點,一個是firstChild和lastChild。

要判斷節點是否有子節點,可以使用someNode。length或someNode。hasChildNodes()。

someNode。ownerDocument可指向文件節點,即html。

javascript自學記錄:Node型別及6個方法

對子節點的操作:

var

null

try

Array

Array

=

prototype

。appendChild(

catch

);

new Array

Array

for

var

length

= someNode。appendChild(someNode。

return

);

//

為ele父節點增加一個子節點,排在最後

var

newele

=

newele

。appendChild(

ele_div

);

ele_div

ele_p

ele_p

//

將第一個子節點作為appendChild的引數,那會將其移到最後一個子節點處

= someNode。appendChild(someNode。

);

var

returnNode

returnNode

firstChild

//

= someNode。insertBefore(newNode,

為ele父節點增加一個子節點,排在最後

);

var

newele

newele

ele_div

= someNode。insertBefore(newNode,someNode。

ele_div

);

ele_p

ele_p

//

將第一個子節點作為appendChild的引數,那會將其移到最後一個子節點處

= someNode。insertBefore(newNode,someNode。

var

);

returnNode

returnNode

firstChild

//

如果第二個引數為null,那等同於appendChild方法

= someNode。replaceChild(newNode,someNode。

);

var

returnNode

returnNode

null

//

= someNode。replaceChild(newNode,someNode。

使插入的節點成為第一個子節點

);

var

returnNode

returnNode

firstChild

=

//

。removeChild(

使插入的節點成為最後一個子節點前的節點

);

節點共有的兩個方法:

someNode。cloneNode() // 引數為true或false,為true時為深度複製,false為淺複製

someNode。normalize() // 當文字節點中不包含文字的則刪除該文字節點,或連續出現兩個文字的則將兩個文字節點內容合併。