JavaScript Prompt() 输入

3
下面的代码仅在用户单击提示框上的“取消”按钮时运行alert('Please enter your name!');。我尝试使代码在用户没有输入任何内容并单击 Enter 时也运行该警报。然而,当他们没有输入任何内容并单击 Enter 时,代码会呈现“Hello”。我该怎么办?
var theName = prompt('What is your name?');

if(theName != null) {
   document.write('Hello, ' + theName);
}

else{
   alert('Please enter your name!');
}

2
RTM: 如果用户在不输入任何文本的情况下点击“确定”,则返回一个空字符串。 - 001
3个回答

1

prompt 返回值

字符串。如果用户点击“确定”,则返回输入的值。如果用户点击“取消”,则返回 null。如果用户在不输入任何文本的情况下点击“确定”,则返回空字符串。


1
当用户在不输入任何字符串的情况下点击“Enter”时,结果将是“empty-string”,即“”。 您只需检查null即可。空字符串不是null。因此,代码按预期工作。 您应该检查null或“”。 一个捷径是滥用一下JavaScript并仅检查
if (theName) { ...} else { ... }

在JavaScript中,根本不需要检查是否为null,因为null和空字符串都是假值。


1
正如@JohnnyMopp和Idos所说,如果用户在没有输入任何内容的情况下点击Enter,将返回一个空字符串。您可以通过在if语句中添加另一个条件来检查这一点:
var theName = prompt('What is your name?');

if(theName != null && theName != "") {
   document.write('Hello, ' + theName);
}

else{
   alert('Please enter your name!');
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接