HTML中的attribute和property的區別

DOM有三種節點類型:元素節點、屬性節點、文本節點,HTML裏的attribute其實就是指屬性節點,舉個例子:在<h1 id="title">Head</h1>裏,h1是元素節點,id="title"是屬性節點, Head 是文本節點,在這裏可以理解爲h1這個元素節點包含一個屬性節點和一個文本節點。讀寫attribute的方法是getAttribute(), setAttribute(), 例如獲取id這個屬性的值:var tem1 = document.getElementById("title"); var idValue = tem1.getAttribute("id");

說完了attribute再來說說property,property簡單的來說就是HTML對象的字段或者說屬性(不是attribue),例如獲取h1標籤的值, var tem1 = document.getElementById("title"); var idValue = tem1.nodeName;同樣的用法還有tem1.title, tem1.id等等。

現在來看看attribute和property的區別:attribute是一種節點(屬性節點),和元素節點是一個級別的節點,或者說你可以簡單的認爲attribute是一個屬性節點對象,而property則是對象的一個字段,可能元素節點對象的字段或屬性節點對象的字段還有文本節點對象。例如屬性節點對象有個property叫nodeName, 例如: var tem1 = document.getElementById("title"); var attr = tem1.getAttributeNode("id");alert(attr.nodeName);其實Dom中關於attribute和property一個非常迷惑人的地方在於,對於常見的幾個attribute,例如id, class, title等,既提供了attribute的訪問方式(因爲它們本來就是attribute,所以肯定可以通過attribue的方式),同時爲了兼容Dom1之前的寫法(有時又稱之DOM0),將這幾種常見的attribute的值又同時保存爲元素節點對象的property, 因此我們既可以通過attribue的寫法 var idValue = tem1.getAttribute("id");來獲取attribute的值,又可以通過property的寫法來獲取attribute的值,如 var idValue = tem1.id。

總結:attribute是屬性節點,它有許多方法來讀寫它的值,如getAttrute()/setAttribute, 而property則是節點對象的一個字段或者說屬性(不是attribute)。

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