-1

我有一个小问题。我想我犯了一个很大的菜鸟错误,但我找不到。在下面的代码中,我尝试获取表单的输入,但它也会在表单之外获取输入。这是为什么 ?

这是我的JS代码:

function selectAll(bool){
    var form = document.forms['selectMailing'];
    for(var i=1; i<=form.length; i++) {
        form.elements['select'+i].checked = bool;
    }
}

和 HTML:

<input type=button value="Select All" onclick="selectAll(true)"/>
<form method=post action="" id="selectMailing" onsubmit="return checkSelect()">
    <input type=checkbox name="select1" value="1" />
    <input type=checkbox name="select2" value="1" />
    <input type=submit value="Spammer" />
</form>

所以当我尝试这个时,JS 在我的输入按钮所在的行返回错误'无法设置属性'已检查'未定义'。为什么会发生这种事情?我选择表单,只有他的元素和输入按钮没有名称,这可能与名称表单混淆。

谢谢你的帮助 !

我知道 jquery,但我之前想学习 JavaScript,所以如果你唯一的答案是“使用 jQuery”,请去帮助别人 :)

4

2 回答 2

2

在您的“selectMailing”表单中,有 3 个输入。您可以通过在代码中为“form.length”发出警报来验证它。前两个输入是复选框类型,第三个是提交类型。

像这样修改 javascript 以访问复选框类型输入项(使用类型检查)

function selectAll(bool){
var form = document.forms['selectMailing'];
//alert(form.length);
for(var i=0; i<form.length; i++){
     if(form.elements[i].type == "checkbox")
     {
          form.elements[i].checked = bool;
      }
  }
}
于 2013-01-18T11:39:21.927 回答
0

从“i<=form.length”中删除“=”

于 2013-01-18T11:34:36.527 回答