我正在使用UI对话框来显示消息。
适用于Firefox和Google Chrome。但是,当我在IE版本中测试时,对话框无法打开。
任何人都可以说出真正的问题是什么吗?
我在下面贴了我的代码:
function check_selected(c) {
var count = c - 1;
var radios = document.getElementsByName('plan');
for ( var i = 0; i < radios.length; i++) {
if (radios[i].disabled) {
if (radios[i].checked) { // checked
$('#planalert').dialog({
modal : true,
autoOpen : true,
title : "Plan",
width : 650,
height : 150,
show : "blind",
hide : "scale",
});
var c = 0;
} else {
var c = 1;
}
}
}
;
if (c == 0) {
return false;
} else {
return true;
}
}
答案 0 :(得分:0)
尝试从您传递的选项对象dialog
中删除尾随逗号:
$('#planalert').dialog({
modal:true,
autoOpen: true,
title:"Plan",
width:650,
height:150,
show: "blind",
hide: "scale" // <-----
});
Internet Explorer会阻塞额外的逗号,而其他浏览器可能不会。
此外,删除;
循环结束括号末尾的分号(for
):
for (var i = 0; i < radios.length; i++) {
/* snip */
} // <--- semicolon not necessary
此外,您试图在函数内多次定义c
。您将它传递给函数,因此您的var c = ...
语句实际上没有您想要的效果。您应该使用另一个变量(我建议使用而不是改变您传递的参数),或者从var
块中删除if
语句。
此外,您的循环实际上只为最后一个禁用的单选按钮设置c
。这是你的意图吗?
无论如何,这是我将如何重写它(不试图解决上面的逻辑错误)。请务必使用JsHint之类的工具检查您的JavaScript以获取探测:
function check_selected(c){
var count=c-1;
var radios = document.getElementsByName('plan');
var isChecked = 0;
for (var i = 0; i < radios.length; i++) {
if (radios[i].disabled) {
if (radios[i].checked){ // checked
$('#planalert').dialog({
modal:true,
autoOpen: true,
title:"Plan",
width:650,
height:150,
show: "blind",
hide: "scale"
});
isChecked = 0;
} else{
isChecked = 1;
}
}
}
return isChecked;
}