HTML,Javascript循环在访问数组中的最后一个元素之前结束

时间:2014-06-11 04:34:40

标签: javascript html for-loop

我是网络开发的初学者。 我正在尝试创建一些代码类似于我在下面附加的代码。 但是,脚本中的函数在运行数组之前结束。 任何人都可以帮我吗?

<html>
  <body>
    <input type=checkbox id=verify_58>
    <input type=checkbox id=verify_59>
    <input type=checkbox id=verify_60>
    <input type=checkbox id=verify_61>
    <input type=checkbox id=verify_61>
    <input type=checkbox id=verify_63>
    <input type=checkbox id=verify_64>
    <input type=checkbox id=verify_65>
    <input type=checkbox id=verify_66>
    <input type=checkbox id=verify_67>
    <input type=checkbox id=verify_68>
    <input type=checkbox id=verify_69>
    <input type=checkbox id=verify_70>
    <input type=checkbox id=verify_71>
    <input type=checkbox id=verify_72>
    <button onclick="verifyall('68~70~71~72~69~58~59~60~61~62~63~64~65~66~67')">Try it</button>

    <script>
      function verifyall(attid) {
        var lstattid=attid.split("~");
        var count = lstattid.length;
        for(var i=0; i<count; i++){
          alert(i+" of "+count);
          var vname = "verify_" + lstattid[i];
          if(document.getElementById(vname).disabled == false){

          }
        }   
      }
    </script>
  </body>
</html>

4 个答案:

答案 0 :(得分:0)

当代码到达数组的第九个元素时,代码会崩溃。您的ID号列表中包含62个值,但没有ID为verify_62的复选框,因此此行:

if(document.getElementById(vname).disabled == false){

失败,出现以下错误:

Unable to get property 'disabled' of undefined or null reference

如果你在控制台中查看,你会看到这一点。

答案 1 :(得分:0)

您的脚本会引发错误:Uncaught TypeError: Cannot read property 'disabled' of null因为,如果您查看复选框列表,则会看到有2个项目具有相同的ID verify_61

答案 2 :(得分:0)

你有61个重复,所以它试图寻找62。

如果你在名字上加上一个名字就更容易得到它们&#34;验证&#34;并使用document.getElementByName(&#39; verify&#39;)..它应该为您提供一个包含您想要迭代的所有内容的数组。

答案 3 :(得分:0)

您的代码尝试访问已禁用的属性&#39;具有id:'verify_62'的元素,在DOM中不存在。

因此,document.getElementById('verify_62')会返回'null'。并且&#39; null&#39;没有财产&#39;禁用&#39;。

因此,请勿在参数中传递'62',或在HTML中添加id 'verify_62'复选框。