對於DOM的attribute和property的一些思考

前段時間,觀看了WTP的一篇文章「DOM的attribute和property」,以爲寫的很好,感謝WTP的做者---玉伯. javascript

而後,我又在網上查詢了些資料(國內外人寫的心得),以爲有篇寫的很好,推薦下 html

http://omiga.org/blog/archives/2055 java

裏面解釋到了關於attribute與property的區別,寫的很好,我就再也不深刻了。 chrome

首先咱們先看WTP給的一個小例子; 瀏覽器

html代碼 spa



咱們先看看取值; .net


而後我將輸入框裏面的值修改下; htm

再看看取值: 對象


很奇怪!爲何他們兩個值是不一樣的呢??????(tell me why!!!) blog

其實就是attribute和property在搞鬼。。。

再看看這篇文章http://www.blogjava.net/wxb_nudt/archive/2005/06/20/6409.html

對於attribute和property的解釋都很好。

尤爲是最後的總結,我很同意。

咱們再來看看玉伯對於兩個的解釋

attribute

input節點有不少屬性(attribute):‘type’,'id','value','class'以及自定義屬性,在DOM中有setAttribute()和getAttribute()讀寫DOM樹節點的屬性(attribute)

PS:在這裏的getAttribute方法有一個潛規則,部分屬性(input的value和checked)經過getAttribut取到的是初始值,這個就很好的解釋了以前的n1爲1。

Property

javascript獲取到的DOM節點對象,好比a 你能夠將他看做爲一個基本的js對象,這個對象包括不少屬性(property),好比「value」,「className」以及一些方法,setAttribute,getAttribute,onclick等,值得注意的是對象的value的屬性(property)取值是跟着輸入框內的當前值一塊兒更新的,這解釋了以前的n2爲何爲1000了。


全部在平常的工做中,推薦是使用 property,這樣事情處理起來比較簡單一些,attribute永遠是字符串。。

PS:關於自定義屬性,對於瀏覽器的兼容性問題,你們本身去研究研究,小弟尚未研究會,就不做小結了。。。(有的註解無論你大小寫,有的卻分的很清楚)。。。

貌似chrome就無論你大小寫。。。

接着咱們來看看咱們對於使用attribute和property自定義屬性的時候的一些區別

能夠看出,自定義的屬性對於attribute和property是互不干擾的

可是對於DOM自帶的屬性就共享了。。。


你們有什麼好的建議或者想法:大膽的提出來吧!你們交流交流心得。。。

相關文章
相關標籤/搜索