接下來正式進入DOM的學習javascript
第三章 DOMhtml
D表明document(文檔),O表明object(對象),M表明model(模型),簡單的說DOM把一份文檔表示成一顆「樹」(數學上的概念).java
節點(node),它表示一個網絡的鏈接點。一個網絡就是由一些節點構成的集合。DOM也是一樣的狀況,文檔是由節點構成的集合.node
1.元素節點(element node)數組
<html>、<head>、<body>、<p>、<ul>等標籤的名字就是元素的名字,好比文本段落元素名字是「p」瀏覽器
2.文本節點(text node) 通常文本節點包含在元素節點裏面網絡
3.屬性節點(attribute node) 屬性節點也包含在元素節點裏,好比最多見的class,id性能
每一個節點都是一個對象學習
獲取元素的方法spa
1.document.getElementById
2.document.getElementsByTagName
3.document.getElementsByClassName
第一種方法比較簡單,第二種方法須要注意的是獲得的結果是一個數組,第三個方法比較新,舊的瀏覽器版本沒有支持,但能夠用原有的方法實現,代碼以下
function getElementsByClassName(node,classname){ if(node.getElementsByClassName){ //若是瀏覽器支持原生的方法,則直接用原生的方法
return node.getElementsByClassName(classname); }else{ var results = new Array(); var elems = node.getElementsByTagName("*"); for(var i = 0; i < elems.length; i++){ if(elems[i].className.indexOf(classname)!=-1){ results[results.length]=elems[i]; } } return results;
}
tips:indexOf()方法可返回某個指定的字符串值在字符串中首次出現的位置。沒有則爲-1。
獲取和設置屬性(二者只能做用於元素節點)
1.getAttribute 使用方法:object.getAttribute(attribute)
2.setAttribute 使用方法:object.setAttribute(attribute,value)
第四章 案例研究:javascript圖片庫
1.setAttribute能夠用其餘方法代替,直接設置:element.value = "the new value",至關於element.setAttribute("value","the new value")
2.childNodes 屬性
在一顆節點樹上,childNodes屬性能夠用來獲取任何一個元素的全部子元素,它是一個包含這個元素所有子元素的數組.
由childNodes屬性返回元素全部類型的節點,不單單是元素節點。幾乎每一種東西都會成爲一個節點,甚至空格和換行都會被解釋爲節點。
3.nodetype屬性
能夠用node.nodeType獲取節點的nodeType屬性
元素節點的nodetype屬性值是1,屬性節點的nodetype屬性值是2,文本節點的nodetype屬性值是3,註釋節點的nodetype屬性值是8,文檔節點的nodetype屬性值是9
4.nodevalue屬性
若是想改變一個文本節點的值,用nodeValue屬性,方法node.nodeValue
5.firstChild和lastChild屬性
分別對應childNodes[0]和childNodes[childNodes.length-1]
第5章 最佳實踐
主要講了寫JS代碼的幾個須要重點注意的東西:
平穩退化、漸進加強、向後兼容、提高性能。
仔細閱讀,在日常作項目時運用。