参见英文答案 >
setAttribute is not working in JavaScript2个
这行代码:
这行代码:
document.getElementById('01').getElementsByTagName("input")[0].setAttribute("value","1");
当“输入”还没有值时,效果非常好.但是当输入已经有值时,它不会改变该值.这是为什么?
解决方法
听起来你在元素属性值和值属性之间遇到了令人困惑的区别.那些不一样的东西.
问题是value-attribute用于默认值的目的,因此如果元素已经具有属性值,则更改value-attribute将不会反映在UI中.
文档说this:
Using setAttribute() to modify certain attributes,most notably value in XUL,works inconsistently,as the attribute specifies the default value. To access or modify the current values,you should use the properties. For example,use elt.value instead of elt.setAttribute(‘value’,val).
为了证明这种情况,请考虑这个小小的演示:
document.getElementById("01").getElementsByTagName("input")[0].value = 'property set'; document.getElementById("01").getElementsByTagName("input")[0].setAttribute("value","two");
<div id="01"> <input type="text" /> </div>
在上面的代码片段中,value属性确实更新为值2,如果您尝试使用getAttribute(‘value’)读取它,则可以验证它,但是value-property优先于属性,因此稍后不会呈现.