字符串长度检查似乎不起作用

时间:2015-10-27 19:40:11

标签: javascript

对你来说没问题,但为什么这在我的Javascript文档中不起作用?

<script>
prompt("Are you ok?");
 if ("no".length > 3) {
 window.location.href = "http://google.com";
 } else {
 window.location.href = "http://facebook.com";
}
</script>

问题在于,即使我输入的内容比“不”更大(也更小),我也会选择Google。我刚刚开始使用JS,并认为如果我可以将它添加到我的网站上会很酷。

2 个答案:

答案 0 :(得分:9)

您没有使用提示返回的值。

<script>
var response = prompt("Are you ok?");
if (response.length > 3) {
  window.location.href = "http://google.com";
} else {
  window.location.href = "http://facebook.com";
}
</script>

如果您执行"no".length,它只会返回字符串"no"的长度,即2。这就是为什么您的情况总是会导致Google的原因。

相反,您可以获取提示返回的值,并检查其长度。更好的是,您可以直接检查特定的字符串。

var response = prompt("Are you ok?");
if (response === "no") {
  window.location.href = "http://google.com";
} else {
  window.location.href = "http://facebook.com";
}

答案 1 :(得分:0)

您正在检查恒定长度是否大于其实际长度,从而导致不可能的组合。

console.log("no".length) // you'll get always 2
console.log("no".length > 2) // always false

你应该这样做的方式(我喜欢单行)

window.location.href = ('no' === window.prompt('Are you ok?')) ? 'http://google.com' : 'http://facebook.com';

在浏览器中处理Yes-No答案的另一种可靠方法:

window.location.href = window.confirm('Go to Google?') ? 'http://google.com' : 'http://facebook.com';