getElementsByName不会遍历整个数组

时间:2012-02-25 23:34:54

标签: javascript loops

按下按钮即可执行以下代码。它可以很好地警告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);
}
}

2 个答案:

答案 0 :(得分:3)

那是因为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数组,(或者只是在内循环中完成工作)


此外,你有一个错误。

此...

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

应该是这个......

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

...否则,你会超过最后一个索引。

答案 1 :(得分:0)

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