2014-08-31 45 views
5

我在最新版本的Chrome中使用Object.observe,並在想爲什麼它不適用於文本輸入的'value'屬性。下面的代碼會記錄添加/更改'foo'屬性的更改,但不會更改值屬性。任何人都知道爲什麼?爲什麼object.observe不能用於輸入字段的value屬性?

var myTextInput = document.getElementById('myTextInput'); 

Object.observe(myTextInput, function(changes){ 

    changes.forEach(function(change) { 
    console.log(change); 
    }); 

}); 

myTextInput.value = 'test123'; 
myTextInput.foo = 'bar'; 
+1

也許是因爲DOM節點是主機對象,基本上可以做任何他們想要的(種類)。還要注意'Object.observe'是ES7的一部分,是高度實驗性的,並沒有最終確定。 – 2014-08-31 19:21:00

+1

'.value' DOM屬性是作爲getter/setter afair實現的,因此它不會真正改變。 – Bergi 2014-09-01 10:29:10

+0

@Bergi這似乎是可能的。 MutationObservers也可能不會提取輸入的值屬性,原因可能相同。我想知道如何存儲價值。 – user2054105 2014-09-01 10:48:29

回答

-1

我不知道這是爲什麼,但因爲你是觀察DOM元素的屬性,該mutation observer api可能更合適。

+1

這對於value屬性也不起作用。試了一下,什麼也沒得到。 Addy Osmani在本文中也指出了這一點(底部是「限制」):http://addyosmani.com/blog/mutation-observers/ – user2054105 2014-09-01 10:39:25

+0

感謝您的鏈接!我沒有意識到這一點。 – bcherny 2014-09-01 20:47:04

相關問題