提示时取消和空输入的值不同

Different values for cancel and empty input on prompt

本文关键字:输入 取消 提示      更新时间:2023-09-26

我刚开始使用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;

我的问题是,如果你在提示上按cancel,我想显示一条消息,如果你没有输入并按OK,我想另显示一条。据我所知,这两个操作都会导致值为null,那么我如何显示不同的消息?

我在代码中所做的显然不是最佳的,我知道这一点。

我也希望while循环结束,如果你按下cancel,它现在没有。

如果需要检查一些不同的falsy值,则需要将它们与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 的实时演示