最近作的前端頁面是個單頁面應用,須要常常給個input賦值什麼的。html
我經常使用的方式是$('#id').attr('value','XXXX'),一直能夠正常使用。今天忽然發現一個問題,某個要賦值的input標籤死活不展現value,查看html代碼,神奇的發現value仍是有值的。前端
也就是說,這個input標籤的value屬性有值,可是不能展現。瀏覽器
折騰一番後,發現若是使用$('#id').val('XXXX')後,則不出現此問題。dom
網上查找一番後,發現了attributes與properties的區別。htm
簡單的講,當你寫html源碼時,你能夠爲你的html標籤賦值attribute。而當瀏覽器解析html生成dom節點時,這個節點就有了properties。用戶看到的是瀏覽器解析並渲染後的頁面,也就是說,咱們看到的是dom節點的properties值。get
一般來說,properties和attribute其中之一發生改變時,另外一個值也會相應的改變。可是惟獨Input 標籤的 value 值特殊。properties值不會跟隨attribute值發生改變。input
參考資料:http://stackoverflow.com/questions/6003819/properties-and-attributes-in-html源碼