Checkbox Dojo函数在IE8上不起作用
我有一段代码,可以使用一个主复选框(作为切换)来选择/取消选择所有Dojo复选框,该复选框在firefox上运行良好,但在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
<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检查您的代码,这会发现许多一开始就看不到的问题。希望我能帮助你 不,这不是问题,只是检查了一下