2012-02-25 97 views
1

下面的代码在按下按钮时执行。它工作正常,提醒getElementsByName阵列中的一个字符串,但是当介绍到一个循环,它仍然只提醒第一个字符串值,仅此而已: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

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

+0

但它仍然只提醒一个值,即使我这样做: 功能checkvals(){ 变种输入= document.getElementsByName( 'ModuleTitle', 'ModuleCode', 'BuildingName', '日'); alert(input [0] .value); alert(input [1] .value); alert(输入[2] .value); alert(输入[3] .value); } – user1228907 2012-02-25 23:58:08

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++){ 

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