Javascript函数未从输入框中获取值并通过数组循环
我试图从一个输入框中收集一个数量,然后勾选某个数量的框,这是一个数组 到目前为止,这是我得到的,但它不起作用:SJavascript函数未从输入框中获取值并通过数组循环,javascript,loops,input,checkbox,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].che
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;
}
}
}
试用
checked=checked
而不是
checked=true
getElementsByName返回一个数组,并且您的函数需要一个元素,您需要像这样访问第一个元素:
checkAmount(document.getElementsByName(\'ammount\')[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]);
将for循环中的ting.value更改为box.length:
function checkAmount(ting) {
var boxes = document.getElementsByTagName("input");
for (var i = 0; i < boxes.length; i++) {
boxes[i].checked = (boxes[i].name == "vote[]") ;
}
}
函数校验金额(ting){
变量框=document.getElementsByTagName(“输入”);
对于(var i=0;i
试试这个:
框。项目(i).选中=选中
抱歉,不确定如何将javascript插入帖子中您发布的是真实代码吗?
如果是这样,您是否意识到在函数调用中拼写“amount”错误
从您的语句“从输入框中收集金额”中,我认为您希望ting是输入到文本框中的数字,因此您调用的函数期望数字的值应解析为表单元素对象数组
var m = document.getElementsByName("amount");
m将是一个数组
换言之,如果您在调用checkAmount时确保传递了一个号码,则效果可能会更好:
checkAmount(documents.forms[0].amount.value)
或:
如果您发布实际的HTML和javascript代码,将会有很大帮助。正如前面的回答和回复所示,您发布的代码存在一些问题。试着这样做:
checkAmount(document.getElementsByName(\'ammount\')[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的调用是否有效,您都不会出现数组越界错误。您的所有投票输入是否都命名为“投票[]”?你怎么知道投了什么票?我认为查看jQuery是个好主意。在循环中,它不是ting.value
而是ting.length
而且,为什么要使用ting.value而不是box.length?如果ting.value应该小于box.length,您可能需要检查该值,否则将得到一个数组越界错误。虽然该属性可以接受的唯一值是选中的
,但DOM属性是布尔值,因此接受真
或假
。您建议将其设置为变量checked
,该变量是未定义的
,因此为假值。净效果是,这将产生与预期完全相反的效果。因为您已经发布了更正。字符串“checked”
是一个真实值,因此它将转换为true
。您的建议现在除了降低代码的效率之外没有任何效果。您好,调用现在已解决,因为即使在我向它发出警报时,它也会给我值,但复选框仍未选中