DOM物件屬性(property)與HTML標籤特性(attribute)
HTML中property與attribute是極易混淆的兩個概念。大多數時候這兩個單詞都翻譯為“屬性”,為了區分二者,一般將property翻譯為”屬性”,attribute翻譯為”特性”。
每一個HTML標籤(tag)都對應一個DOM介面HTMLXxxElement,比如Span標籤對應的是HTMLSpanElement。這些標籤的DOM介面都繼承自HTMLElement介面,而HTMLElement又繼承自Element。我們知道所有的標籤都是一個元素結點,因此Element介面又繼承自Node介面。其實HTML文件樹中的所有東西都是結點,只不過有不同的結點型別而已。
property就是DOM物件的屬性,就像普通的javascript物件的屬性一樣一樣的,因為DOM物件就是一個地道的javascript物件,也有自己的原型鏈。
而attribute則是HTML標籤的特性,比如
1
|
<div id = "div1" title= "title1" > test <div> |
這裡id和title是HTML標籤div的特性,雖然對應的DOM物件HTMLDivElement也有這兩個屬性,但它們卻是完全不一樣的東西。有些特性與屬性是同步的。
HTML標籤的attribute以類陣列的形式儲存在對應DOM物件的屬性attributes中,attributes屬性的型別為NamedNodeMap物件。
DOM物件提供了方法setAttribute,getAttribute和removeAttribute來操縱HTML標籤的特性。
1
2
|
DOMString getAttribute( in DOMString name); void setAttribute( in DOMString name,
in DOMString value) raises(DOMException); |
HTML標籤attribute的名字和值都必須為字串型別,而DOM物件的property沒有此限制,可以是任何型別。
有些HTML標籤的attribute有對應的DOM物件property,但它們的取值卻不一定是相同的。一般來說相對應的attribute與property其名字是一樣的,但是class特性有所不同,因為class在javascript中為關鍵字,所以其所對應的property名字為className。
有些簡單的特性,比如id,兩者的取值是一樣的。
1
2
|
var id1=elem. id ; var id2=elem.getAttribute( 'id' ); |
但對於input的value,使用getAttribute獲取的永遠是寫HTML標籤時指定的那個值,而value屬性則獲取到的是input當前輸入的值。
而另一些特性比如checked,只要checked特性存在,無論其值是什麼,DOM物件的checked屬性的值都是true。這裡checked屬性已經不是字串而是布林型別了。
還有一些特性比如style和onclick,其對應的DOM屬性完全是返回一個物件了,比如elem.style屬性就返回一個CSSStyleDeclaration物件。
HTML自定義attribute沒有對應的DOM物件property。
References:
[1]attribute和property的區別
[2]JavaScript中的property和attribute的區別
[3]SD9006: IE 混淆了 DOM 物件屬性(property)及 HTML 標籤屬性(attribute),造成了對 setAttribute、getAttribute 的不正確實現
[4]The HTML DOM Element Object
[5]DOM元素的特性(Attribute)和屬性(Property)
===
你自己的程式碼如果超過6個月不看,再看的時候也一樣像是別人寫 —— 伊格爾森定律
載自:http://openwares.net/linux/dom_property_element_attribute.html
相關文章
- js便籤筆記(2)——DOM元素的特性(Attribute)和屬性(Property)JS筆記
- HTML標籤屬性HTML
- HTML 標籤與屬性大小寫HTML
- [譯]HTML attribute與DOM property之間的區別?HTML
- HTML meta 標籤總結與屬性HTML
- HTML 常用的標籤和屬性HTML
- js給html標籤新增屬性JSHTML
- 常用的HTML標籤和屬性HTML
- HTML DOM之document物件的屬性和方法HTML物件
- HTML常用標籤或屬性全稱HTML
- 自定義html標籤和表單屬性HTML
- python物件屬性管理(2):property管理屬性Python物件
- DOM 中 Property 和 Attribute 的區別
- 正值表示式匹配html標籤的屬性值HTML
- HTML5 <meta> 標籤屬性,所有meta用法HTML
- 語義化你的HTML標籤和屬性HTML
- Python深入淺出property特性屬性Python
- quotes屬性與<q>標籤關係
- JavaScript ----- 操作DOM物件的屬性JavaScript物件
- HTML5 標籤、屬性及相容性速查表HTML
- Property屬性
- html5~標籤新特性HTML
- html的meta總結,html標籤中meta屬性使用介紹HTML
- 標籤的 src 屬性
- Property 與 Attribute 區別
- HTML5的新特性——語義化標籤、多媒體標籤(video、audio)、input型別、表單屬性HTMLIDE型別
- 標籤上title與alt屬性的區別
- input標籤autocomplete 屬性
- jquery對標籤屬性操作jQuery
- javaScript DOM方法與屬性摘要JavaScript
- DOM屬性
- html指令碼 標籤與HTML指令碼
- HTML 標籤與佈局HTML
- xss標籤和屬性爆破
- link標籤屬性介紹
- Maven屬性(properties)標籤的使用Maven
- script標籤的crossorigin屬性ROS
- HTML中你不得不知道的標籤及屬性HTML