4

ユーザーがデータを入力するためのJavascriptプロンプトを表示しようとしています(プロンプトが使用されているため)。しかし、それは表示されません。window.alert が表示され、window.confirm も表示されます。しかし、迅速ではありません。実行しようとしているコードは次のとおりです。

var is_expired = document.getElementById("is_expired").value;
    if (is_expired == "yes") {
        alert(is_expired);
        var answer = prompt("Are you sure you?");
        alert(answer);
    }

これが実行されると、if ステートメントが入力されます。最初のアラートには、当然のことながら「はい」が表示されます。ただし、プロンプト行はスキップされます。次のアラートは「未定義」と表示されます。

ここで、変更するのがキーワードプロンプトだけの場合、次のように機能します。

var is_expired = document.getElementById("is_expired").value;
    if (is_expired == "yes") {
        alert(is_expired);
        var answer = confirm("Are you sure you?");
        alert(answer);
    }

これを実行すると、確認ボックスが表示されます。[OK] をクリックすると、次のアラートは「true」と表示され、[キャンセル] をクリックするとアラートは「false」と表示されます。

したがって、ここで重要なことは、Javascript を停止させる構文エラーがないことです。実際には、その 1 行をスキップして実行を継続しています。その行の何が問題になっていますか? 複数のサイトをチェックして、正しいことを確認しました。2 番目の「デフォルト」パラメータを追加しても役に立ちません。私はそれを試しました。また、問題を示す Javascript エラーはありません。

ここに行って自分のコードに変更し (is_expired を yes にハードコードしました)、そこで動作します。

どんな助けでも素晴らしいでしょう。ありがとう。

編集: 明確にするために、私は W3school の例が正確であることに依存していません。「試してみる」ページを使用して自分のコードをテストしました。私もjfiddleでこれを行いましたが、うまくいきました。コンソールを使用して関数を確認すると、「未定義」が返されます。

EDIT2:実際には、それをスクラッチします。コンソールにコマンドがなかったときに、誤ってもう一度エンターを押してしまいました。プロンプトの実際の出力は次のとおりです。

[12:07:55.940] [object Function]
4

3 に答える 3