0

我有一个填充了数据库的复选框,因此我进行了结构化。

<div class="all_checkbox">
 <div> 
   <input type="checkbox" id="<?php echo $data['id']; ?>" style="float:left;"name="option_<?php echo $data['id']; ?>" value="<?php echo $data['id']; ?>">  
  </div> 
  <div style="margin-left:24px;"> 
     <label for="<?php echo $data['id']; ?>" >
              <?php echo $data['cat_title']; ?>
     </label> 
 </div> 
</div>

我想测试选中的复选框——我在 java 脚本中有以下代码:

function add_cat(){
  for (i=1; i<55; i++)
  {
    if(document.getElementById(i).checked == true )
    { 
      alert(i);
    }   
  }
}

循环没有达到 55。它在 6 处停止。for谁能解释为什么?

4

4 回答 4

1

不确定我是否理解这个问题,因为我不会说法语,但是...

ID 和 NAME 标记必须以字母 ([A-Za-z]) 开头,后跟任意数量的字母、数字 ([0-9])、连字符 ("-")、下划线 ("_") , 冒号 (":") 和句点 (".")。

编辑

啊,它现在已经被翻译了(感谢这样做的人)。我仍然认为这是你的问题。

于 2012-09-14T09:37:48.730 回答
1

在http://www.w3schools.com/tags/att_standard_id.asp查看 ID 命名规则 它必须以字母开头,后跟字母、数字、连字符、下划线、冒号、句点。
在运行循环之前,还要检查文档中是否存在所有 ID。如果指定范围内的任何 ID 不存在,那么您会收到如下错误:
TypeError: document.getElementById(i) is null
并且执行将在该点停止。
我认为这就是你的原因。

于 2012-09-14T09:50:52.880 回答
1

for 循环将执行其主体 for i=1until i=54,然后i将递增到 55 并停止。

但是,循环体中的某些代码可能会引发异常,从而导致循环(和整个脚本)停止。这可能是一个类型错误,当您没有找到任何元素object is null - can't access property时抛出。document.getElementById(i)检查您的错误控制台。为避免这种情况,您可以将代码更改为

 var el = document.getElementById(i);
 if ( el && el.checked ) …
 // which is short for
 if ( el != null  && el.checked == true ) …

顺便说一句,数字不是有效的 html 标识符。这不会破坏你的代码,但你仍然应该解决这个问题。

于 2012-09-14T09:50:54.370 回答
0

这个 FOR 循环使用从 1 到 54 的 i 值循环。

于 2012-09-14T09:40:28.633 回答