節點類型由在Node類型中定義的12個數值常量來表示,任何節點類型必居其一javascript
節點關係,保存NodeList對象,是一種數組對象,用於保存一組有序的節點,能夠經過位置來訪問這些節點。html
childNodesjava
var firstChild=someNode.childNodes(); var secondChild=someNode.childNodes.item(); var count=someNode.childNodes.length();
操做節點node
appendChild(),向childNodes列表的末尾添加一個節點。添加節點以後,childNodes的新曾節點、父節點以及之前的最後一個子節點的關係都會相應地獲得更新數組
//someNode 有多個子節點 var returnedNode = someNode.appendChild(someNode.firstChild); alert(returnedNode == someNode.firstChild); //false alert(returnedNode == someNode.lastChild); //true
insertBefore(),把節點放在childNodes列表中某個特定的位置上。接收兩個參數,要插入的點和做爲參照的節點app
//插入後成爲最後一個子節點 returnedNode = someNode.insertBefore(newNode, null); alert(newNode == someNode.lastChild); //true //插入後成爲第一個子節點 var returnedNode = someNode.insertBefore(newNode, someNode.firstChild); alert(returnedNode == newNode); //true alert(newNode == someNode.firstChild); //true //插入到最後一個子節點前面 returnedNode = someNode.insertBefore(newNode, someNode.lastChild); alert(newNode == someNode.childNodes[someNode.childNodes.length-2]); //true
replaceChild(),替換節點。接收兩個參數,要插入的節點和要替換的節點,要替換的節點將由這個方法返回並從文檔樹中移除,同時由要插入的節點佔據其位置dom
//替換第一個子節點 var returnedNode = someNode.replaceChild(newNode, someNode.firstChild); //替換最後一個子節點 returnedNode = someNode.replaceChild(newNode, someNode.lastChild);
removeChild(),移除節點,接收一個參數,即要移除的節點。工具
//移除第一個子節點 var formerFirstChild = someNode.removeChild(someNode.firstChild); //移除最後一個子節點 var formerLastChild = someNode.removeChild(someNode.lastChild);
document對象是HTMLDocument的一個實例,表示整個HTML頁面,並且,document對象是window對象的一個屬性,所以能夠將其做爲全局對象來訪問。url
document對象有一些標準的Document對象所沒有的屬性,這些屬性提供了document對象所表現的網頁的一些信息spa
//取得文檔標題 var originalTitle = document.title; //設置文檔標題 document.title = "New page title"; //取得完整的 URL var url = document.URL; //取得域名 var domain = document.domain; //取得來源頁面的 URL var referrer = document.referrer;
特殊集合
文檔寫入功能,write()、writeln()、open()和close()
<html> <head> <title>document.write() Example</title> </head> <body> <p>The current date and time is: <script type="text/javascript"> document.write("<strong>" + (new Date()).toString() + "</strong>"); </script> </p> </body> </html>
用於表現XML或HTML元素,提供了對元素標籤名、子節點及特性的訪問
HTML元素存在一些標準特性
取得特性,設置屬性,移除屬性。getAttribute()、setAttribute()和removeAttribute()
var div = document.getElementById("myDiv"); alert(div.getAttribute("id")); //"myDiv" alert(div.getAttribute("class")); //"bd" alert(div.getAttribute("title")); //"Body text" alert(div.getAttribute("lang")); //"en" alert(div.getAttribute("dir")); //"ltr" div.setAttribute("id", "someOtherId"); div.setAttribute("class", "ft"); div.setAttribute("title", "Some other text"); div.setAttribute("lang","fr"); div.setAttribute("dir", "rtl"); div.removeAttribute("class");
attribute屬性
var id = element.attributes.getNamedItem("id").nodeValue; var id = element.attributes["id"].nodeValue; element.attributes["id"].nodeValue = "someOtherId"; var oldAttr = element.attributes.removeNamedItem("id"); element.attributes.setNamedItem(newAttr);
包含的是照字面解釋的純文本的內容
操做方法
建立文本節點document.createTextNode()
var element = document.createElement("div"); element.className = "message"; var textNode = document.createTextNode("Hello world!"); element.appendChild(textNode); document.body.appendChild(element);
規範化文本節點normalize()
var element = document.createElement("div"); element.className = "message"; var textNode = document.createTextNode("Hello world!"); element.appendChild(textNode); var anotherTextNode = document.createTextNode("Yippee!"); element.appendChild(anotherTextNode); document.body.appendChild(element); alert(element.childNodes.length); //2 element.normalize(); alert(element.childNodes.length); //1 alert(element.firstChild.nodeValue); // "Hello world!Yippee!"
分割文本節點splitText()
var element = document.createElement("div"); element.className = "message"; var textNode = document.createTextNode("Hello world!"); element.appendChild(textNode); document.body.appendChild(element); var newNode = element.firstChild.splitText(5); alert(element.firstChild.nodeValue); //"Hello" alert(newNode.nodeValue); //" world!" alert(element.childNodes.length); //2
註釋在DOM中經過Comment類型來表示
使用document.createCommet()併爲其傳遞註釋文本也能夠建立註釋節點
var comment=document.createComment("A comment")
與Comment相似,繼承自Text類型,擁有除splitText()以外的全部字符串操做方法
包含着與文檔的doctype有關的全部信息
輕量級文檔,能夠包含和控制節點,不會像完整的文檔那樣佔用額外的資源
特性是存在於元素的attribute屬性中的節點
屬性和方法
//建立 table var table = document.createElement("table"); table.border = 1; table.width = "100%"; //建立 tbody var tbody = document.createElement("tbody"); table.appendChild(tbody); // 建立第一行 tbody.insertRow(0); tbody.rows[0].insertCell(0); tbody.rows[0].cells[0].appendChild(document.createTextNode("Cell 1,1")); tbody.rows[0].insertCell(1); tbody.rows[0].cells[1].appendChild(document.createTextNode("Cell 2,1")); // 建立第二行 tbody.insertRow(1); tbody.rows[1].insertCell(0); tbody.rows[1].cells[0].appendChild(document.createTextNode("Cell 1,2")); tbody.rows[1].insertCell(1); tbody.rows[1].cells[1].appendChild(document.createTextNode("Cell 2,2")); //將表格添加到文檔主體中 document.body.appendChild(table);