Javascript setAttribute()不';I don’我不能按我期望的方式工作

Javascript setAttribute()不';I don’我不能按我期望的方式工作,javascript,html,Javascript,Html,这行代码: document.getElementById('01').getElementsByTagName("input")[0].setAttribute("value", "1"); 当“input”还没有值时,它可以非常好地工作。但当输入已经有值时,它不会更改该值。为什么呢 当标签已经具有值属性时,JavaScript绝对会更改标签的值。请参见此处:有关输入字段,如果要设置值,请使用值 纯javascript: document.getElementById('01').getEl

这行代码:

document.getElementById('01').getElementsByTagName("input")[0].setAttribute("value", "1");

当“input”还没有值时,它可以非常好地工作。但当输入已经有值时,它不会更改该值。为什么呢

当标签已经具有
属性时,JavaScript绝对会更改
标签的值。请参见此处:

有关输入字段,如果要设置值,请使用值

纯javascript:

document.getElementById('01').getElementsByTagName("input")[0].value = "value"
jQuery:

 $("input").val("value")

听起来您在元素属性
value
value
属性之间遇到了令人困惑的差异。这些是不同的事情

关键是value属性服务于默认值的目的,所以如果元素已经有属性值,那么更改value属性将不会反映在UI中

文件说:

使用setAttribute()修改某些属性,尤其是XUL中的值,效果不一致,因为该属性指定了默认值。要访问或修改当前值,应使用属性。例如,使用elt.value而不是elt.setAttribute('value',val)

为了证明这种情况,请考虑一下这个小例子:

document.getElementById(“01”).getElementsByTagName(“输入”)[0]。值=“属性集”;
document.getElementById(“01”).getElementsByTagName(“输入”)[0].setAttribute(“值”,“两个”)


您尝试过.value=1而不是.setAttribute(“value”,“1”)?如果是我自己,我会将元素存储在一个var中,并使用var.value=1而不是使用setAttribute方法。如果这与您的总体目标不一致,请在您的声明周围发布一些代码,我们会帮您解决。@Sushil是的,谢谢。这是可行的。用户更改输入字段的值后,将使用新值。如果你想拥有你的价值,你必须再次改变它,使用
onchange
eventyour's most welcome@zahramoradiAgreed。我认为他的问题是他改变了一次,然后又试图再次改变。在这种情况下,取决于他调用函数/事件的方式,这就是为什么它看起来没有改变。希望他能为我们发布更多的代码。好吧,我自己看看。我试过了,但没用。不管他们说什么。@zahramoradi将您的一些代码(输入,您的javascript)发布给我们,以便我们能够适当地帮助您。@Fata1Err0r不只是在代码中更改一次。我认为他使用的是常规javascript,而不是jQuery。不过,我同意这篇文章的观点,学习jQuery,你的生活就会轻松得多。作者要求提供一个javascript解决方案,这意味着没有人应该强迫他使用jQuery。另外,请注意,jQuery已经不再相关了。@KarelG虽然我同意没有人应该为一个简单的JavaScript问题强制使用jQuery解决方案,但说jQuery不再相关是非常大胆的……我使用Rails,而jQuery是Deafolt Rails 3!“jQuery不再相关”是什么意思?