如何解决“Uncaught TypeError:无法读取属性'已检查' of null“

时间:2017-08-16 05:28:21

标签: javascript php html checkbox

我有'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;
        }
    }
}

如果将状态更改为未批准表中的元素,则会显示上述错误。我知道这是因为我改变了某些元素的状态。有没有其他方法来检查元素是否存在(检查长度是否有帮助)?如何解决这个错误?请帮帮我。

1 个答案:

答案 0 :(得分:1)

尝试以下

  1. 使用document.querySelectorAll查找所有复选框
  2. Array.prototype.slice将列表截断为$limit个项目
  3. Array.prototype.filter将列表限制为checked个和
  4. Array.prototype.length获取点数
  5. HTML / PHP

    <input type="checkbox" name="chekgrp[]" id="cheks_<?= $row['id'] ?>" onclick="Checkchk()" value="<?= $row['id'] ?>" />
    

    JS

    var limits = parseInt(document.getElementById('hiddenval').value, 10)
    var selector = 'input[type="checkbox"][name="chekgrp[]"]'
    var countelm = Array.prototype.slice.call(document.querySelectorAll(selector), 0, limits)
        .filter(function(checkbox) { return checkbox.checked })
        .length