日期:2014-05-17  浏览次数:20683 次

JS写的checkbox全选为什么在IE8中有BUG--求助
function select_all(obj, cName) {
var checkObj = document.all(cName);
for ( var i = 0; i < checkObj.length; i++) {
if (obj.checked) {
checkObj[i].checked = true;
} else {
checkObj[i].checked = false;
}

}

//o = document.getElementsByName(cName);
// for ( var i = 0; i < o.length; i++) {
// o[i].checked = obj.checked;

// }

// for (i = 0; i < o.length; i++) {
// o[i].checked = event.srcElement.checked;
// }

// for (i = 0; i < tag.length; i++) {
// if (tag[i].type == "checkbox") {
// if (c.checked) {
// tag[i].checked = true;
// } else {
// tag[i].checked = false;
// }
// }
// }

// if (c.checked) {
// for (i = 0; i < o.length; i++) {
// o[i].checked = true;
//}

//}else {
// for (i = 0; i < o.length; i++) {
// o[i].checked = false;
// }
// }
}


用了几种方法写,都大同小异,在IE8中点全选的checkbox之后所有的选项都不自动选中,要点下鼠标才能选中,不知道是什么原因,但是在IE9中是可以的。。求助。。

------解决方案--------------------
看看你的name是怎么传的?
我写了段,跟你差不多IE8下完全没问题的啊。
HTML code

<html>
    <script>
    function checkedAll(obj, sName){
        var objs = document.getElementsByName(sName);
        if(obj.checked){
            for(var i = 0; i < objs.length; i++){
                objs[i].checked = true;
            }
        }else{
            for(var i = 0; i < objs.length; i++){
                objs[i].checked = false;
            }
        }
    }
    </script>
    <body>
        <input type="checkbox" id="selectAll" onclick="checkedAll(this, 'select')"/>all
        
        <input type="checkbox" id="select" />1
        <input type="checkbox" id="select" />2
        <input type="checkbox" id="select" />3
        <input type="checkbox" id="select" />4
    </body>
</html>