0

我正在使用 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;
    }
}
4

1 回答 1

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;
 }
于 2012-05-19T13:11:55.870 回答