未捕获的TypeError:对象没有方法'setAttribute'

时间:2013-08-25 03:21:36

标签: javascript for-loop nested-loops

我的嵌套for循环遇到了一些麻烦。我正在尝试确定表单中已选中复选框的值。我被告知整个事情的格式应该是这样的:

for(checkboxes loop){
   for(item.appointmentType[1] loop){
      if(statement conditional){
          set checks code
      }
   }
}

但我似乎无法正确写入,因为我收到错误说, 未捕获的TypeError:对象没有方法'setAttribute'

以下是我正在使用的代码。有人可以帮助我纠正它,可能知道我在说什么吗?

var checkboxes = document.forms[0].appointmentType;
for(var i=0; i<checkboxes.length; i++){
   for(var j=0; j<item.appointmentType[1].length; j++){
      if(checkboxes[i].value === item.appointmentType[1][j]){
        item.appointmentType[1][j].setAttribute("checked", "checked");
      }
   }
}

以下是与javascript一起提供的HTML代码。所有的javascript都包含在它自己的.js文件中。

<ul><span class="lab">
<li><input type="checkbox" checked value="Get A Free Estimate" id="Get A Free Estimate"
    name="appointmentType" /><label for="getAFreeEstimate"><span class="gfe">Get A FREE
    Estimate</span></label></li>
<li><input type="checkbox" value=" Lawn Service" id="lawnService" name="appointmentType"/
    <label for="lawnService"><span class="ls">Lawn Service</span></label></li>
<li><input type="checkbox" value=" Sprinkler System Service" id="sprinklerSystemService"
    name="appointmentType" /><label for="sprinklerSystemService"><span
    class="sss">Sprinkler System Service</span></label></li>
<li><input type="checkbox" value=" Flower Bed Maintenance" id="flowerBedMaintenance"
    name="appointmentType" /><label for="flowerBedMaintenance"><span class="fbm">Flower
    Bed Maintenance</span></label></li>
<li><input type="checkbox" value=" Hedge/Tree Service" id="hedgeTreeService"
    name="appointmentType" /><labe for="hedgeTreeService"><span class="hts">Hedge / Tree
    Service</span></label></li>
<li><input type="checkbox" value=" Handyman Services" id="handymanServices"
    name="appointmentType" /><label for="handymanServices"><span class="hs">Handyman
    Services</span></label></li>
<li><input type="checkbox" value=" Other" id="other" name="appointmentType" /><label
    for="other"><span class="otr">Other</span></label></li></span></ul><br/>

2 个答案:

答案 0 :(得分:0)

这一行:

item.appointmentType[1][j].setAttribute("checked", "checked");

应该是:

checkboxes[i].checked = true;

答案 1 :(得分:0)

如果你在你的proyect中渲染了Jquery,你认为你可以用以下代码替换你的行:

checkboxes = $('input [type =“checkbox”]');

$(复选框[I])丙( '检查',TRUE);

也许会有所帮助