getElementsByName赢得't在整个数组中循环

getElementsByName won't loop through entire array

本文关键字:数组 循环 赢得 getElementsByName      更新时间:2023-09-26

以下代码在按下按钮时执行。它可以很好地提醒getElementsByName数组的一个字符串,但当引入循环时,它仍然只提醒第一个字符串值,而不是更多:

function checkvals() {
var input = document.getElementsByName('ModuleTitle', 'ModuleCode', 'BuildingName', 'Day');
var i = 0;
for (i = 0; i <= input.length; i++){
alert(input[i].value);
}
}

这是因为getElementsByName只接受一个参数,所以它只获取第一个名称。

你可以建立这样一个完整的集合。。。

var names = ['ModuleTitle', 'ModuleCode', 'BuildingName', 'Day'];
var input = [];
for(var i = 0; i < names.length; i++) {
    var name_els = document.getElementsByName(names[i]);
    for(var j = 0; j < name_els.length; j++) {
        input.push(name_els[j]);
    }
}

然后在input数组上循环(或者只在内部循环中完成工作)


此外,您还有一个bug。

这个。。。

for (i = 0; i <= input.length; i++){

应该是这个。。。

for (i = 0; i < input.length; i++){

否则,您将超过最后一个索引。

这是因为getElementsByName只接受单个name参数,并为其name属性返回具有该值的所有元素。(请参见https://developer.mozilla.org/en/DOM/document.getElementsByName.)如果要查找多个name,则必须多次调用它。