选择所有复选框时出现问题

时间:2012-08-22 15:04:11

标签: javascript

我有这个代码,允许我立刻检查所有复选框。

问题是,当我选择"选择所有"复选框,它选择所有其他复选框,但如果我在其他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 个答案:

答案 0 :(得分: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;
        }
    }
}

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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

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

到此(如果未选中则只检查它):

x.form[i].checked=true

答案 3 :(得分: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;
相关问题