【发布时间】:2018-01-24 03:11:18
【问题描述】:
我有“n”个复选框。 复选框显示:
<?php
$result=mysql_query("select * from tablename where status='approved'");
$result1=$count=mysql_result(mysql_query("select max(id) from tablename where status='approved'"),0);
$limit=mysql_num_rows($result);
while($row=mysql_fetch_array($result)){?>
<input type="checkbox" name="chekgrp[]" id="cheks_<?php echo $row['id'];?>" onclick="Checkchk()" value="<?php echo $row['id'];?>" />
<?php }
?>
值 n 设置在隐藏字段中
<input type ="hidden" value="<?php echo $limit; ?>" id="hiddenval" name=" hiddenval">
javascript验证是:
var limits=parseInt(document.form.hiddenval.value);
var countelm=0;
for(i=1;i<= limits;i++){
if (("cheks_"+i).length>0){
if(document.getElementById("cheks_"+i).checked)
{
countelm = countelm +1;
}
}
}
如果将状态更改为未批准表中的元素,则会显示上述错误。我知道这是因为我改变了某些元素的状态。有没有其他方法可以检查元素是否存在(检查长度没有帮助)?如何解决这个错误?请帮帮我。
【问题讨论】:
-
("cheks_"+i).length指的是什么? -
if (("cheks_"+i).length>0)的意义何在?永远是true -
@Phil,3 秒 :)))
-
在检查它的
checked属性之前检查DOM节点是否存在,使用document.getElementById("cheks_"+i) && document.getElementById("cheks_"+i).checked -
我想说这里的问题是,这不能保证结果集
id列是连续的(例如,1、2、3、4...)。使用for循环会假设复选框具有连续的后缀。使用document.querySelectorAll('input[id^="cheks_"]')可能会更好
标签: javascript php html checkbox