Javascript DOM – HTML文檔處理

 

自從開始用jQuery開始,就逐漸地產生了對jQuery的依賴,對原生的一些JavaScript操作也慢慢的忘掉了,這樣不好..不好.. 偶爾還是要拿出來溫習一下。原文

1、創建節點
createElement()
var node = document.createElement(“div”);
沒什麼可說的,創建一個元素節點,但注意,這個節點不會被自動添加到文檔(document)裏。

2、創建文本節點
createTextNode()
var value = document.createTextNode(“text”);
創建一個文本節點,常用來往元素節點裏添加內容,也不會自動添加到文檔裏。
很多人知道innerHTML,不知道這個方法,這個添加的是靜態文本,如果插入的內容不帶HTML格式,用createTextNode比innerHTML安全,而innerText又有瀏覽器不兼容的問題,因此用createTextNode很好使。

3、插入節點到最後
appendChild()
node.appendChild(value);
將節點插入到最後,上面兩個創建的節點不會自動添加到文檔裏,所以就要使appendChild來插入了。
如果是新的節點是插入到最後,而如果是已經存在的節點則是移動到最後,這點很多人注意不到,理解了這點,再和下面的方法結合,可以方便的移動操作節點。

4、插入節點到目標節點的前面
insertBefore()
var node = document.createElement(“div”);
var _p = document.createElement(“p”);
var _span = document.createElement(“span”);
node.appendChild(_p);
node.insertBefore(_span, _p);
<span>節點在<p>節點前面插入,其中第二個參數是可選,如果第二個參數不寫,將默認添加到文檔的最後,相當於appendChild。
同樣,appendChild和insertBefore,如果是已存在節點,他們都會自動先刪除原節點,然後移動到你指定的地方。
將節點移動到最前面的技巧:
if (node.parentNode.firstChild) node.parentNode.insertBefore(node, node.parentNode.firstChild);
else node.parentNode.appendChild(node);

5、複製節點
cloneNode(boolean)
node.cloneNode(true);
node.cloneNode(false);
複製上面的div節點,參數true,複製整個節點和裏面的內容;false,只複製節點不要裏面的內容,複製後的新節點,也不會被自動插入到文檔,需要用到3和4的方法去插入。

6、刪除節點
removeChild()
node.removeChild(_p);
把上面的<p>節點從<div>裏刪除。不過一般情況下,不知道要刪除的節點的父節點是什麼,因此一般這麼使:node.parentNode.removeChild(node);

7、替換節點
repalceChild(newNode, oldNode)
node.repalceChild(_p, _span);
把上面的<span>節點替換成<p>節點,注意無論是<span>還是<p>,都必須是<div>的子節點,或是一個新的節點。

8、設置節點屬性
setAttribute()
node.setAttribute(“title”,”abc”);
不解釋了,很容易明白。就說一句,用這個方法設置節點屬性兼容好,但class屬性不能這麼設置。
備註:亦可直接給節點屬性賦值,如input.type=”radio”; input.name=”myname”

9、獲取節點屬性
getAttribute()
node.getAttribute(“title”);
同8,獲取節點屬性。

10、判斷元素是否有子節點
hasChildNodes
node.hasChildNodes;
返回boolean類型,因此將新節點插入到最前面的技巧:
var node = document.createElement(“div”);
var newNode = document.createElement(“p”);
if (node.hasChildNodes) node.insertBefore(newNode, node.firstChild);
else node.appendChild(node);

最後是DOM的屬性:

nodeName – 節點的名字;
nodeType – 返回一個整數,代表這個節點的類型,1-元素節點,2-屬性節點,3-文本節點;
nodeValue – 返回一個字符串,這個節點的值;
childNodes – 返回一個數組,數組由元素節點的子節點構成;
firstChild – 返回第一個子節點;
lastChild – 返回最後一個子節點;
nextSibling – 返回目標節點的下一個兄弟節點,如果目標節點後面沒有同屬於一個父節點的節點,返回null;
previousSibling – 返回目標節點的前一個兄弟節點,如果目標節點前面沒有同屬於一個父節點的節點,返回null;
parentNode – 返回的節點永遠是一個元素節點,因爲只有元素節點纔有可能有子節點,document節點將返回null;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章