简体   繁体   English

Javascript-检查所有复选框问题

[英]Javascript -Check all Checkboxes problem

I'm using the javascript: 我正在使用javascript:

<SCRIPT LANGUAGE="JavaScript">
function Check(chk)
{
if(document.myform.CheckAll.value=="Check All"){
for (i = 0; i < chk.length; i++)
chk[i].checked = true ;
document.myform.CheckAll.value="Uncheck All";
} else {

for (i = 0; i < chk.length; i++)
chk[i].checked = false ;
document.myform.CheckAll.value="Check All";
}
}
</script>

On the html code: 在html代码上:

<form name="myform" method="post" action="">
<input type="checkbox" name="check_list[]" value="<? echo $row['Report ID'] ?>">
<input type="checkbox" name="check_list[]" value="<? echo $row['Report ID'] ?>">
...*More Checkboxes*...
<input style="font-family: sans-serif; font-weight:bold; font-size:12px; border: 1px #000000 solid;" type="button" id="CheckAll" name="CheckAll" value="Check All"
onClick="Check(document.myform.check_list[])">

But it doesn't seem to be working... 但这似乎不起作用...

It did work at some point, but that was before I used the name: "check_list[]" (the '[]' bit) -Does that cause a problem with the javascript? 它确实可以正常工作,但是那是在我使用名称之前:“ check_list []”(“ []”位)-是否会导致javascript问题? And if so how can I stop it? 如果是这样,我该如何制止它? -Or how can I get the javascript to check all checkboxes? -或者如何获取JavaScript来检查所有复选框? :) :)

Thank you very much. 非常感谢你。

Check this out (code duplication removed + improvements) 检查一下(已删除代码重复+改进)

js: js:

function Check(frm){
    var checkBoxes = frm.elements['check_list[]'];
    for (i = 0; i < checkBoxes.length; i++){
        checkBoxes[i].checked = (frm.CheckAll.value == "Check All") ? 'checked' : '';
    }
    frm.CheckAll.value = (frm.CheckAll.value == "Check All") ? "Uncheck All" : 'Check All';
}

markup: 标记:

<form name="myform" method="post" action="">
<input type="checkbox" name="check_list[]" value="<? echo $row['Report ID'] ?>">
<input type="checkbox" name="check_list[]" value="<? echo $row['Report ID'] ?>">
<input style="font-family: sans-serif; font-weight:bold; font-size:12px; border: 1px #000000 solid;" type="button" id="CheckAll" name="CheckAll" value="Check All"
onClick="Check(document.myform)">

example: http://jsfiddle.net/steweb/XL6uh/ 示例: http//jsfiddle.net/steweb/XL6uh/

The "[ ]" characters a reserved in javascript to identify arrays. javascript中的[[]]字符保留用于标识数组。 ie you can't reference them in the DOM using document.myform.check_list[]. 即,您不能使用document.myform.check_list []在DOM中引用它们。 This would refer to an array of elements named 'check_list'. 这将引用名为“ check_list”的元素数组。

What you can do is retrieve the checkboxes from the form's element array instead. 您可以做的是改为从表单的元素数组中检索复选框。 Just change your onclick like so: 只需像这样更改onclick:

onclick="Check(document.myform['check_list[]'])"

NB: I would recommend you learn a javascript framework such as jQuery. 注意:建议您学习jQuery之类的JavaScript框架。 It makes doing this type of thing so much easier and you can write unobtrusive javascript. 它使做这种事情变得非常容易,并且您可以编写简洁的JavaScript。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM