这行代码:
document.getElementById('01').getElementsByTagName("input")[0].setAttribute("value", "1");
当“输入”还没有值时,完全正常。但是当输入已经有值时,它不会改变该值。这是为什么?
答案 0 :(得分:15)
听起来您遇到了元素属性value
和value
属性之间令人困惑的区别。这些不一样。
问题是value-attribute用于默认值的目的,因此如果元素已经具有属性值,则更改value-attribute将不会反映在UI中。
文档说this:
使用setAttribute()修改某些属性,尤其是XUL中的值,因为属性指定了默认值,因此工作不一致。要访问或修改当前值,您应该使用属性。例如,使用elt.value而不是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属性确实更新为值two
,如果您尝试使用getAttribute('value')
读取它,则可以验证它,但是value-property优先于属性,所以以后不会渲染。
答案 1 :(得分:1)
当代码已经具有<input>
属性时,JavaScript绝对会更改value
代码的值。请在此处查看:http://jsfiddle.net/qg7d4m32/
答案 2 :(得分:1)
如果要设置值,只需使用值
纯javascript:
document.getElementById('01').getElementsByTagName("input")[0].value = "value"
jQuery的:
$("input").val("value")