在浏览器中使用javascript通过类设置html输入元素的值?

Max*_*ges 0 html javascript

我需要根据类(class =“ Qty”)设置一堆输入框的值

如果我使用ElementID,这可以工作

document.getElementById('G_Qty_0').value='101'
Run Code Online (Sandbox Code Playgroud)

但这不起作用

document.getElementsByClassName('Qty').value='100'
Run Code Online (Sandbox Code Playgroud)

是什么赋予了?

干杯!

T.J*_*der 6

document.getElementsByClassName返回一个NodeList,而不是单个元素。您可以遍历列表,例如:

var list = document.getElementsByClassName('Qty');
var n;
for (n = 0; n < list.length; ++n) {
    list[n].value='100';
}
Run Code Online (Sandbox Code Playgroud)

或者,如果您知道只有一场比赛(并且您知道不会有零场比赛):

document.getElementsByClassName('Qty')[0].value = '100';
Run Code Online (Sandbox Code Playgroud)

您可能还会关注querySelectorquerySelectorAll,因为它们实际上比getElementsByClassName(特别是:IE8支持,但没有getElementsByClassName)提供更好的支持。在文档中querySelector查找与给定CSS选择器匹配的第一个元素,并返回该元素实例(null如果没有)。querySelectorAll返回NodeList所有匹配元素的。(这NodeList与所返回的不完全相同getElementsByClassName,因为它是您拨打电话时的快照,而不是实时的NodeList)。

因此,例如:

document.querySelector('.Qty').value = '100';
Run Code Online (Sandbox Code Playgroud)

要么:

var list = document.querySelectorAll('.Qty');
var n;
for (n = 0; n < list.length; ++n) {
    list[n].value='100';
}
Run Code Online (Sandbox Code Playgroud)

  • @MaxHodges - 一个简单的提醒,如果它说“getElements”带有**s**,那么它始终是一个nodeList。 (2认同)