最近作的前端页面是个单页面应用,须要常常给个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源码