0

我有这段代码,它允许我一次检查所有复选框。

问题是,当我选择“全选”复选框时,它会选择所有其他复选框,但如果我在其他 2 个复选框之前选择了,它会选择除这两个复选框之外的所有复选框!

它不能正常工作..

你能看看吗?

功能:

function selectAll(x) {
for(var i=0,l=x.form.length; i<l; i++)
if(x.form[i].type == 'checkbox' && x.form[i].name != 'sAll')
x.form[i].checked=x.form[i].checked?false:true
}

全选:

<input type="checkbox" name="sAll" onclick="selectAll(this)" /> 

以及我页面中的所有其他复选框:

<input type='checkbox' size='40' name='active[$i] ' ' ";?> <?php if($rows['img_active'] == 1) { echo 'checked'; }  ?> <? if("checked"){ echo 'value="1"';} else{ echo 'value="0"';}?>
4

4 回答 4

2
function selectAll(x) {
    var checked = x.checked;
    for (var i = 0, l = x.form.length; i < l; i++) {
        var elem = x.form[i];
        if (elem !== x && elem.type === "checkbox") {
            elem.checked = checked;
        }
    }
}
于 2012-08-22T15:10:41.663 回答
1

这将使所有复选框处于与全选复选框相同的状态。

x.form[i].checked = x.checked ? false : true;
于 2012-08-22T15:11:41.427 回答
0

更改此代码(切换选中状态):

x.form[i].checked=x.form[i].checked?false:true

对此(如果未选中则仅检查它):

x.form[i].checked=true
于 2012-08-22T15:05:11.797 回答
0

这条线

x.form[i].checked=x.form[i].checked?false:true

切换复选框的状态,因此很自然地,任何被选中的都将被取消选中。

你要

x.form[i].checked = true;

反而。

编辑:您是否希望所有复选框都根据复选框的状态运行sAll

x.form[i].checked = document.getElementsByName('sAll')[0].checked;
于 2012-08-22T15:06:45.433 回答