【问题标题】:Prompt not returning null? [duplicate]提示不返回null? [复制]
【发布时间】:2019-02-25 02:40:31
【问题描述】:

我在页面的开头有一个提示,并且标题的文本会根据用户的输入而更改。由于单击 Cancel 按钮返回 null 并且单击 Ok 按钮而不在字段中输入任何文本返回一个空字符串,因此我在代码中使用了两个检查来更改文本因此。问题是当单击 Cancel 按钮时,提示实际上并没有返回 null。而是将其作为字符串返回。

Javascript:

var name = prompt("Enter your name");
var header = document.getElementById("welcome-header");

if (name !== "null" && name !== "") {
    header.innerHTML = `Welcome, ${name}!`;
}

为了适应这种情况,我不得不将 null 放在一个字符串中,如代码 sn-p 所示。我错过了什么吗?

Here's 其中 W3 显示它应该返回 null。

【问题讨论】:

  • 为什么提示不返回null?如果我将 if 语句更改为: if (name !== null) {...} 它停止工作。
  • 这很奇怪,根据文档它应该返回null
  • 当我遇到这个错误时,我更加困惑,因为我最近在搞乱时使用提示,并且在检查空值时它工作得很好。不过这里并没有这样做
  • window.name?可能正在混合全局属性
  • 重复,看这个问题: stackoverflow.com/questions/38597356/…

标签: javascript


【解决方案1】:

你可以做一个假检查:

if (!name) {...}

【讨论】:

  • 适用于空值,但不适用于输入实际字符串
【解决方案2】:

试试这个,你不应该关心它是否为空,如果它不为空,它的长度应该 > 0 但是你可以使用简单的正则表达式来查找任何单词,以防只输入空格。不知道为什么 null 作为字符串传递,我不能复制这种行为,但如果它是一个边缘情况,请尝试:

if (name != 'null' && name.match(/\w/).length > 0 {
    header.innerHTML = `Welcome, ${name}!`;
}

【讨论】:

  • 仍然允许 null 通过(单击“取消”显示“欢迎,null!”)
  • 您使用的是什么浏览器?这似乎很奇怪
  • 查看更新的答案
  • 在主线程上查看 cmets
  • @ChrisLallo 好的,但是如果有人输入空格键 2 次或更多然后点击确定,你会遇到同样的问题,所以如果没有我在这里给出的正则表达式示例,你仍然会遇到错误
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-24
  • 2019-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-09
  • 1970-01-01
相关资源
最近更新 更多