2012-08-15 38 views
9

我只是想知道兩者之間有什麼區別。我注意到這兩種方法有時會有不同的結果。Element.value和Element.getAttribute(「value」)之間的區別

+0

[使用getAttribute()或不使用getAttribute()的可能的重複:這是問題](http://stackoverflow.com/questions/7278922/to-use-getattribute-or-not-to -use-getattribute-that-the-question) – 2012-08-15 17:01:28

+1

雖然[這個問​​題](http://stackoverflow.com/questions/3953028/any-diffrence-between-element-setattribute-elementattr-element-attr)指的是設置而不是獲取,信息可能會幫助你。 – j08691 2012-08-15 17:01:58

+1

@ j08691映射到屬性的屬性始終反映該屬性的當前值。 – Esailija 2012-08-15 17:08:47

回答

17

不同之處在於element.value是實時的,如果用戶發生變化,比如文本框輸入,它會反映出來,並顯示新的值。

雖然getAttribute('value')仍然會顯示原始值value="whateverWasHere"的值。

jsFiddle DEMO

+2

這解釋了我看到的行爲。謝謝:) – ama2 2012-08-15 17:12:46

10

.value不映射到任何屬性。

.defaultValue映射到"value"屬性。所以當你說elem.getAttribute("value")elem.defaultValue一樣。

此外,.defaultValue反映.value當輸入是未觸及的(dirty value flag is false)。在用戶交互改變輸入的值後,該映射停止。雖然輸入未觸及,但您可以更改.defaultValue(因此也可以更改.setAttribute("value")),也可以更改.value。這並不是說這實際上是有用的,但仍然有趣的一段瑣事。

+0

嗯我不知道elem.defaultValue存在,謝謝 – ama2 2012-08-15 17:15:25

+0

@ ama2我的觀點是'.value'與屬性''value「'不一樣,但'.defaultValue'是。這就是原因,這有點不直觀。請考慮http://jsfiddle.net/J9Mat/2/ – Esailija 2012-08-15 17:16:30

+1

+1。這個答案有重要的細節。 – 2012-08-15 17:31:35

相關問題