DocumentType類型
-
DocumentType 包含著與文檔的doctype 有關(guān)的所有信息,它具有下列特征:
- nodeType 的值為10疲迂;
- nodeName 的值為doctype 的名稱若未;
- nodeValue 的值為null朱嘴;
- parentNode 是Document;
- 不支持(沒(méi)有)子節(jié)點(diǎn)粗合。
DOM1 級(jí)描述了DocumentType 對(duì)象的3 個(gè)屬性:name萍嬉、entities 和notations。
name 表示文檔類型的名稱隙疚;entities是由文檔類型描述的實(shí)體的NamedNodeMap對(duì)象壤追;notations 是由文檔類型描述的符號(hào)的NamedNodeMap 對(duì)象。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
alert(document.doctype.name); //"HTML"
DocumentFragment類型
- 在所有節(jié)點(diǎn)類型中供屉,只有DocumentFragment 在文檔中沒(méi)有對(duì)應(yīng)的標(biāo)記行冰。
- DocumentFragment 節(jié)點(diǎn)具有下列特征:
- nodeType 的值為11;
- nodeName 的值為"#document-fragment"伶丐;
- nodeValue 的值為null悼做;
- parentNode 的值為null;
- 子節(jié)點(diǎn)可以是Element哗魂、ProcessingInstruction肛走、Comment、Text啡彬、CDATASection 或
EntityReference。
- 雖然不能把文檔片段直接添加到文檔中故硅,但可以將它作為一個(gè)“倉(cāng)庫(kù)”來(lái)使用庶灿,即可以在里面保存將來(lái)可能會(huì)添加到文檔中的節(jié)點(diǎn)。
- 要?jiǎng)?chuàng)建文檔片段吃衅,可以使用document.createDocumentFragment()方法往踢。
- 文檔片段繼承了Node 的所有方法,通常用于執(zhí)行那些針對(duì)文檔的DOM操作徘层。
<ul id="myList"></ul>
var fragment = document.createDocumentFragment();
var ul = document.getElementById("myList");
var li = null;
for (var i=0; i < 3; i++){
li = document.createElement("li");
li.appendChild(document.createTextNode("Item " + (i+1)));
fragment.appendChild(li);
}
ul.appendChild(fragment);
Attr類型
元素的特性在DOM 中以Attr 類型來(lái)表示峻呕。在所有瀏覽器中(包括IE8),都可以訪問(wèn)Attr 類型的構(gòu)造函數(shù)和原型趣效。
-
特性就是存在于元素的attributes 屬性中的節(jié)點(diǎn)瘦癌。特性節(jié)點(diǎn)具有下列特征:
- nodeType 的值為2;
- nodeName 的值是特性的名稱跷敬;
- nodeValue 的值是特性的值讯私;
- parentNode 的值為null;
- 在HTML 中不支持(沒(méi)有)子節(jié)點(diǎn);
- 在XML 中子節(jié)點(diǎn)可以是Text 或EntityReference斤寇。
Attr 對(duì)象有3 個(gè)屬性:name桶癣、value 和specified。
name 是特性名稱(與nodeName 的值相同)娘锁,value 是特性的值(與nodeValue 的值相同)牙寞,而specified 是一個(gè)布爾值,用以區(qū)別特性是在代碼中指定的莫秆,還是默認(rèn)的间雀。
使用document.createAttribute()并傳入特性的名稱可以創(chuàng)建新的特性節(jié)點(diǎn)。
var attr = document.createAttribute("align");
attr.value = "left";
element.setAttributeNode(attr);
alert(element.attributes["align"].value); //"left"
alert(element.getAttributeNode("align").value); //"left"
alert(element.getAttribute("align")); //"left"