按下按钮即可执行以下代码。它可以很好地警告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);
}
}
答案 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
,则必须多次调用它。