Javascript函数没有从输入框获取值并循环遍历数组

时间:2011-01-07 22:38:55

标签: javascript loops input checkbox

我试图从输入框中收集一定数量,然后勾选一定数量的数据框。

这是我到目前为止所做的并且它不起作用:S

function checkAmount(ting)  {  
var boxes = document.getElementsByTagName("input");  
for (var i = 0; i < ting.value; i++)   {  
    if (boxes[i].name == "vote[]")   {  
        boxes[i].checked = true;  
    }  
}  
}

我用它来称呼它:

uncheckAll(); 
checkAmount(document.getElementsByName(\'ammount\'));

5 个答案:

答案 0 :(得分:2)

getElementsByName返回一个数组,你的函数需要一个元素,你需要像这样访问第一个元素:

checkAmount(document.getElementsByName(\'ammount\')[0]); 

将for循环中的ting.value更改为boxes.length:

function checkAmount(ting)  {  
var boxes = document.getElementsByTagName("input");  
for (var i = 0; i < boxes.length; i++)   {  
        boxes[i].checked = (boxes[i].name == "vote[]") ;  
  }  
}

答案 1 :(得分:0)

尝试使用

checked=checked

而不是

checked=true

答案 2 :(得分:0)

试试这个:

boxes.item(i).checked = checked

抱歉不确定如何将javascript插入帖子

答案 3 :(得分:0)

你发布真实代码了吗? 如果是这样,你会发现你的函数调用中拼写的“数量”错误了吗?

从您的陈述“从输入框中收集金额”我认为您希望ting是一个输入到文本框中的数字,因此您正在调用一个函数,该函数需要一个值应该解析为数组的数字表单元素对象?

var m = document.getElementsByName("amount");

m将是一个阵列!

换句话说,如果你确定在调用checkAmount时传递了一个数字,它可能会更好:

checkAmount(documents.forms[0].amount.value)

或:

checkAmount(documents.getElementsByName("amount")[0].value)

如果您发布实际的HTML和实​​际的JavaScript代码,那将会有很大帮助。

答案 4 :(得分:0)

您发布的代码存在一些问题,如之前的答案和回复所示。尝试这样的事情:

function checkAmount(ting)  {  
    var boxes = document.getElementsByTagName("input");  
    for (var i = 0; i < ting.value && i < boxes.length; i++)   {  
        if (boxes[i].name == "vote[]")   {  
            boxes[i].checked = true;  
        }  
    }  
}

这样称呼:

uncheckAll(); 
checkAmount(document.getElementsByName(\'ammount\')[0]);

现在,无论输入字段中输入的值是什么,并且对checkAmount的调用都有效,您都可以安全地避免数组越界错误。