2011-01-07 74 views
0

即时尝试从输入框中收集一定量,然后勾选一定数量的数组。JavaScript函数没有从输入框中获取值并通过数组循环

这就是我有这么远,它不工作: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; 
    } 
} 
} 

和IM与此称之为:

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

是你所有的投票输入命名为“投票[]”?你怎么知道什么是投票?我认为这是一个好主意,看看jQuery .. – 2011-01-07 22:41:31

+0

在循环中,它不是`ting.value`,而是`ting.length` – JCOC611 2011-01-07 22:42:17

回答

0

尝试使用

checked=checked 

,而不是

checked=true 
+0

也是,为什么使用ting.value而不是boxes.length?如果ting.value应该小于boxes.length,你可能想检查一下,否则你会得到一个数组超出界限的错误。 – jun 2011-01-07 22:44:24

2

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

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

更改ting.value在以boxes.length for循环:

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

试试这个:

boxes.item(i).checked = checked

遗憾没河畔e如何将javascript插入帖子中

0

您是否在发布真实的代码? 如果是这样,你意识到你正在拼写'数量'错误的函数调用?

从你的语句“从输入框中收集数量”我认为你期望ting是一个输入到文本框中的数字,因此你调用一个函数,该函数需要一个数值,该数值应该解析为一个数组表单元素对象?

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

m将是一个数组!

换句话说,它可能会更好地工作,如果你确信你传递一个数字,当你调用checkAmount:

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

或:

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

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

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应该工作。