执行$("#someId").val("newValue")
不会更改DOM -
我可以使用$("#someId").val()
检索此值,但DOM中的元素仍然没有值属性。
如何设置输入组件的值并更改DOM?
我正在使用jQuery 1.5.1
。
答案 0 :(得分:6)
.val()确实更改DOM。例如:
$("#someId").val("newValue");
alert(document.getElementById('someId').value);
提醒'newValue'。
请参阅DEMO。
如果要更改要在表单重置中使用的默认值,请尝试以下操作:
$("#someId").attr("defaultValue", "newValue");
请参阅DEMO。
答案 1 :(得分:2)
<强>答案强> 如果你使用的是萤火虫,它有一个关于更新dom的错误,你必须点击 窗口对象刷新它:)
<强>解释强>
@alex我正在阅读下面的评论。在@rsp回答中你似乎把dom和html树混为一个dom,就像一个树状的值列表,用于跟踪值。然后单击dom选项卡,或者右键单击有问题的元素,然后在dom中检查它,值,更改不会显示在firebug上,因为安全原因会阻止除浏览器以外的任何内容更改其值or
因为火虫,它错了,他们可能正在努力:)
答案 2 :(得分:1)
阅读“rsp”答案和讨论:
您想要更改HTML源代码,而不是DOM。
因此使用:
$('#YOUR_ID option[value="YOUR_VALUE"]').attr('selected', 'selected');
方法.val()不会更改HTML源代码。
干杯。 斯特凡诺
答案 3 :(得分:1)
此
$("#someId").val("newValue")
将更改输入元素的值。
此
$("#someId").attr("value","newValue")
将更改value属性的值。
如果要编写元素,第二个可能会有所帮助。所以,例如:
$("#someId").val("newValue")
$("#someId").attr("value","newValue")
write($("#someId").parent())
- 将导致呈现新值,而
$("#someId").val("newValue")
write($("#someId").parent())
- 只显示原始值。