0

UIダイアログボックスを使用してメッセージを表示しています。

FirefoxとGoogleChromeでうまく機能します。ただし、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 に答える