0

JavaScript 代码

function toggle(source) {

  console.log('here');
  checkboxes = document.getElementsByName('checkbox[]');

  for(var i=0, n=checkboxes.length;i<n;i++) {
       checkboxes[i].checked = source.checked;
    }
 }

PHP 代码动态生成所有复选框

    <td><input name="checkbox[<?php echo $row['id']?>]" type="checkbox" id="checkbox" value="<?php echo $row['id']; ?>"></td>

根据上面的 PHP 代码,所有的名称值都是动态生成的。上面的 Javascript 代码无法选中所有复选框

请帮忙!


经过很长时间的研究,终于找到了我的关键问题的分析器 - 选择并检查具有不同名称、值、id 和相同类型的所有复选框。

function toggle (source) {
var checkboxes;
var len = document.frm1.elements.length;
var x = document.getElementById('all');

for(var i = 0 ; i< len;i++){

    if(document.frm1.elements[i].type == "checkbox")
        {

        checkboxes = document.frm1.elements[i];
        if(x.checked == true)
        {
            document.frm1.elements[i].checked = true;
        }
        else
        {
            document.frm1.elements[i].checked = false;
        }
           }

     /*if( isAllCheck == false ){
        document.frm1.elements[i].checked = "true";
        //alert( "it is false" );
    }else{ 
        document.frm1.elements[i].checked = "false";
        //alert( "it is true" );
    }
   isAllCheck = !isAllCheck; */


            }
     console.log(checkboxes);
     for(var i=0, n=checkboxes.length;i<n;i++) {

checkboxes[i].checked = source.checked;

       }

我希望这对其他人有帮助...

4

7 回答 7

2
var inputs = document.getElementsByTagName("input");
var checkboxes=[];
for(var i = 0; i < inputs.length; i++) {
if(inputs[i].type == "checkbox") {
    checkboxes.push( inputs[i] ); 
}  
}

如果您想检查所有这些,那么您必须在条件inputs[i].checked = true;内添加该行if

提示:不要为复选框分配相同的 ID!!!

于 2013-08-05T10:23:53.587 回答
1
checked = false;
function ToggleAll(source) {
checkboxes = document.getElementsByName('course[]');
for(var i=0, n=checkboxes.length;i<n;i++) {
checkboxes[i].checked = source.checked;
}
}

HTML:
<input type='checkbox' name='checkall' onclick='ToggleAll(this);'> Select All
<input type='checkbox' id = 'course' name='course[]'>Val1
<input type='checkbox' id = 'course' name='course[]'>Val2
于 2013-09-25T10:45:13.807 回答
0

这不会以这种方式工作,因为您的复选框都没有名称“checkbox[]”。您可以通过给它们一个类并使用 getElementsByClassName 函数来获取所有复选框。因此,您获得复选框的行将如下所示:

var checkboxes = document.getElementsByClassname('yourClassName');

在 html 中,您只需将复选框指定为“yourClassName”类。

请注意,某些较旧的浏览器不支持getElementsByClassname。

于 2013-08-05T10:17:00.320 回答
0

您的 HTML 导致

<td><input name="checkbox[1]" type="checkbox" id="checkbox" value="1"></td>

这与

<td><input name="checkbox[]" type="checkbox" id="checkbox" value="1"></td>

要让 PHP 自动选择您需要添加的所有复选框

<td><input name="checkbox[]" type="checkbox" id="checkbox" value="1" 已选中></td>

于 2013-08-05T10:18:53.263 回答
0

使用 jQuery,您应该能够执行类似的操作

checkboxes = $('input[name^="checkbox"]');

获取名称以“复选框”开头的所有输入元素

于 2013-08-05T10:24:51.773 回答
0

将 class="toggle" 分配给要与源切换的所有复选框。

var elemsToggle = document.getElementsByClassName("toggle");
  for(var i = 0; i < inputs.length; i++) {
    elemsToggle[i].checked = source.checked;
  }

此代码将检查或取消选中所有具有 class="toggle" 的复选框,具体取决于源复选框的状态。

于 2013-08-05T11:05:02.623 回答
0

您可以使用 querySelectorAll

function toggle_checkbox(name) {
        checkboxes = document.querySelectorAll("input[name^='"+ name +"[']");

        for (var i = 0, n = checkboxes.length; i < n; i++) {
            checkboxes[i].checked = source.checked;
        }
}
于 2016-12-07T02:20:05.110 回答