Checkbox Dojo函数在IE8上不起作用

Checkbox Dojo函数在IE8上不起作用,checkbox,internet-explorer-8,dojo,cross-browser,Checkbox,Internet Explorer 8,Dojo,Cross Browser,我有一段代码,可以使用一个主复选框(作为切换)来选择/取消选择所有Dojo复选框,该复选框在firefox上运行良好,但在IE8上运行不正常。我努力想找出问题所在,但毫无头绪,有人能帮我吗。我正在附上下面的代码: <script type="text/javascript"> dojo.require("dojo.parser"); dojo.ready(function() { var checkboxes = []; do

我有一段代码,可以使用一个主复选框(作为切换)来选择/取消选择所有Dojo复选框,该复选框在firefox上运行良好,但在IE8上运行不正常。我努力想找出问题所在,但毫无头绪,有人能帮我吗。我正在附上下面的代码:

    <script type="text/javascript">
    dojo.require("dojo.parser");

    dojo.ready(function() {
        var checkboxes = [];
        dojo.query('#waferCheck_cb input[type=checkbox]').forEach(function(node, index, arr){
        checkboxes.push(arr[index].id);
        var handle = dojo.connect(dijit.byId(arr[index].id), "onchange", function(evt){

            var cbClicked = evt.target.id;
            var cbStatus = dijit.byId(cbClicked).get("checked");
            setCBSelection(checkboxes,cbClicked,cbStatus );
            dojo.disconnect(handle);        
            });
        });
    });

    function setCBSelection(checkboxes,cb_Clicked, cb_Status) {
        var len = checkboxes.length;
        if(len > 0) {
            // get index of the checkbox clicked
            var cb_pos = 0;
            for(var i = 0; i < len; i++) {
                if(cb_Clicked == checkboxes[i]) {
                    cb_pos = i;
                    break;
                }
            }

            // If Select All checkbox clicked, set the other checboxes accordingly
            if(cb_pos == 0) {
                for(var i = 1; i < len; i++) {
                    dijit.byId(checkboxes[i]).set("checked", cb_Status);
                }
            } else {
                // If any other checkbox is clicked, set the Select All accordingly
                var allCBSameStatus = true;
                for(var i = 1; i < len; i++) {
                    var curCBStatus = dijit.byId(checkboxes[i]).get("checked");
                    if(curCBStatus != cb_Status) {
                        allCBSameStatus = false;
                        break;
                    };
                }
                if(allCBSameStatus){
                    dijit.byId(checkboxes[0]).set("checked", cb_Status)
                }else{
                    if(cb_Status == false) {
                        dijit.byId(checkboxes[0]).set("checked", cb_Status)
                    }
                }
            }
        }
    }
</script>

require(“dojo.parser”);
ready(function()){
var复选框=[];
query('#waferCheck_cb input[type=checkbox]').forEach(函数(节点、索引、arr){
复选框.push(arr[index].id);
var handle=dojo.connect(dijit.byId(arr[index].id),“onchange”,函数(evt){
var cbClicked=evt.target.id;
var cbStatus=dijit.byId(cbClicked.get(“checked”);
setCBSelection(复选框、cbClicked、cbStatus);
断开(手柄);
});
});
});
功能设置CBS选择(复选框、点击cb\U、cb\U状态){
var len=复选框。长度;
如果(len>0){
//获取已单击复选框的索引
var cb_pos=0;
对于(变量i=0;i
我相信IE8不喜欢缺少分号。我看到两行缺少分号

dijit.byId(checkboxes[0]).set("checked", cb_Status)

dojo.ready(…)
之前,您是否尝试过定义
函数setCBSelection(…)
(请参见下文)?也许这会有所帮助,因为它在定义之前就已经被使用了?如果这没有帮助,它可能是有用的,如果你张贴一些类型的错误消息IE可能抛出

    dojo.require("dojo.parser");

    function setCBSelection(checkboxes,cb_Clicked, cb_Status) {
        var len = checkboxes.length;
        if(len > 0) {
            // get index of the checkbox clicked
            var cb_pos = 0;
            for(var i = 0; i < len; i++) {
                if(cb_Clicked == checkboxes[i]) {
                    cb_pos = i;
                    break;
                }
            }

            // If Select All checkbox clicked, set the other checboxes accordingly
            if(cb_pos === 0) {
                for(i = 1; i < len; i++) {
                    dijit.byId(checkboxes[i]).set("checked", cb_Status);
                }
            } else {
                // If any other checkbox is clicked, set the Select All accordingly
                var allCBSameStatus = true;
                for(i = 1; i < len; i++) {
                    var curCBStatus = dijit.byId(checkboxes[i]).get("checked");
                    if(curCBStatus != cb_Status) {
                        allCBSameStatus = false;
                        break;
                    }
                }
                if(allCBSameStatus){
                    dijit.byId(checkboxes[0]).set("checked", cb_Status);
                }else{
                    if(cb_Status === false) {
                        dijit.byId(checkboxes[0]).set("checked", cb_Status);
                    }
                }
            }
        }
    }


    dojo.ready(function() {
        var checkboxes = [];
        dojo.query('#waferCheck_cb input[type=checkbox]').forEach(function(node, index, arr){
        checkboxes.push(arr[index].id);
        var handle = dojo.connect(dijit.byId(arr[index].id), "onchange", function(evt){

            var cbClicked = evt.target.id;
            var cbStatus = dijit.byId(cbClicked).get("checked");
            setCBSelection(checkboxes,cbClicked,cbStatus );
            dojo.disconnect(handle);        
            });
        });
    });
dojo.require(“dojo.parser”);
功能设置CBS选择(复选框、点击cb\U、cb\U状态){
var len=复选框。长度;
如果(len>0){
//获取已单击复选框的索引
var cb_pos=0;
对于(变量i=0;i

顺便说一句:您应该始终使用
==
0
false
进行比较。。。您可以使用让JSLint检查您的代码,这会发现许多一开始就看不到的问题。希望我能帮助你

不,这不是问题,只是检查了一下