節點的型別有幾種
10。1 節點層次
document是文件節點,html是文件元素。
標籤是元素節點;
特性是特性節點;
文件型別是型別節點;
註釋是註釋節點。
10。1。1 Node型別
Node型別下有12種節點型別,可以使用nodeType屬性得到:
alert
(節點名。
nodeType
);
為了確保跨瀏覽器相容,可使用以下方法檢測:
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。 對子節點的操作: 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() // 當文字節點中不包含文字的則刪除該文字節點,或連續出現兩個文字的則將兩個文字節點內容合併。