2

私は Javascript を使い始めたばかりで、こんにちはと言う小さなスクリプトを作成しようとしています。ここにあります:

function hello() {

    while (!name) {

        var name = prompt("What's your name", "");
        var greetingElement = document.getElementById("greeting");

        greetingElement.style.color = "red";

        if (name == null) {
            greetingElement.innerHTML = "Boring!";
            break;
        }
        else if (name == 0) {
            greetingElement.innerHTML = "Don't you have a name";
        }
        else {
            greetingElement.innerHTML = "Hello " + name + "!";
        }
    }
}
window.onload = hello;

私の問題は、プロンプトでキャンセルを押した場合に 1 つのメッセージを表示し、入力せずに [OK] を押した場合に別のメッセージを表示することです。私が理解できる限り、これらの両方のアクションの結果は値が null になるため、別のメッセージを表示するにはどうすればよいでしょうか?

私が自分のコードで行ったことは明らかに最適ではありません。

また、キャンセルを押した場合にwhileループを終了させたいのですが、今はそうではありません。

4

1 に答える 1

3

いくつかの異なる偽値をチェックする必要がある場合は、それらをStrict equal演算子で比較する必要があります。以下のコードで確認できます。また、流暢に動作するように、コードにいくつかの小さな変更を加えました。

function hello(){
    var greetingElement = document.getElementById("greeting");
    greetingElement.style.color = "red";
    while (!name) {
        var name = prompt("What's your name?", "");
        if (name === null || name === false) { // Canceled
            greetingElement.innerHTML = "Boring!";
            break; // Leave this out, if the name is mandatory
        }
        if (name === "") { // OK, but no name
            greetingElement.innerHTML = "Don't you have a name?";
        } else { // OK with a name
            greetingElement.innerHTML = "Hello " + name + "!";
        }
    }
}

jsFiddleでのライブ デモ

于 2013-02-22T21:12:41.147 に答える