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

标签 javascript prompt

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

我的问题是,如果您在提示上按“取消”,我想显示一条消息,如果您不输入内容并按“确定”,则显示另一条消息。据我所知,这两个操作都会导致值 null,那么如何显示不同的消息?

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

如果您按取消键,我还希望 while 循环结束,而现在却没有。

最佳答案

如果需要检查一些不同的虚假值,则需要将它们与 Strict equal 进行比较运算符(operator)。您可以在下面的代码中看到它。我还对您的代码做了一些细微的更改,以使其顺利工作。

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

关于javascript - 提示时取消和空输入的不同值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15032565/

相关文章:

javascript - 使用 Controller 中对象的位置 x,y 创建动态网格或表格 - bootstrap、AngularJS

javascript - 固定页面不可见区域的div

javascript - 为什么这个 javascript 提示不起作用?

JavaScript prompt() 在 AppJS 中不起作用

javascript - AJAX 数据的控制台日志是我的 html 代码?

javascript - 如何约束随机性

windows - 如何查看服务启动时的日志文件?

macos - 命令行并在Mac终端中输出不同的颜色?

batch-file - CMD "MOVE/Y"要求确认

javascript - 使用 js 或 jQuery 计算 td 类的总和