检查javascript布尔奇怪的行为
Posted
技术标签:
【中文标题】检查javascript布尔奇怪的行为【英文标题】:Checking for javascript booleans weird behavior 【发布时间】:2014-06-20 22:56:21 【问题描述】:大家好,我实际上是在做一个简单的 javascript 来检查布尔值。我知道这已经被问过很多次了。我对 javascript 还很陌生,这几乎都是关于基本的,不是吗?
<script>
var boolValue = true;
function f1()
if(boolValue == true)
alert("This is true!");
else
alert("This is false!");
</script>
问题是这个脚本永远不会起作用。即使 boolValue 设置为 false,boolValue 也是 true。我不知道我是否在这里遗漏了什么,但这对于我遇到的其他语言来说是微不足道的。您在同一范围内的函数外部声明了一个变量。我希望可以在 f1() 中访问 boolValue?我也用 === 做到了这一点。
所以这就是我实际上正在做的事情,我正在玩有关 W3C JavaScript 基本介绍的教程。我到处玩,我想在按钮上做一个切换效果来改变消息。
所以我做了什么:
<!DOCTYPE html>
<html>
<body>
<h1>My First JavaScript</h1>
<p>JavaScript can change the content of an HTML element:</p>
<button type="button" onclick="myFunction()">Click Me!</button>
<p id="demo">This is a demonstration.</p>
<script>
var status = true;
function myFunction()
if(status == true)
document.getElementById("demo").innerHTML = "Hello World!";
status = false;
else
document.getElementById("demo").innerHTML = "This is a demonstration.";
status = true;
</script>
</body>
</html>
同样将 var 设为 global 也不会改变它。你如何检查 javascript 中的布尔值?特别是,更改在函数外部声明的变量并在该函数内更改该变量?但是,如果我将布尔值更改为整数、0 或 1 等信号。它可以工作。我想要的是类似于布尔值的行为。
我正在使用 Opera。我没有其他浏览器来测试这个。谢谢!
【问题讨论】:
你的第一个例子对我来说很好。 将其作为参数传入,而不是使用这样的全局变量。并使用textContent
而不是innerHTML
。并使用外部事件处理而不是内联 javascript。
你的例子对我有用。你也可以像这样检查布尔值: if(boolValue) //true else //false
这似乎不是什么问题???你能检查第二个例子吗?检查它是否切换?让我知道它是否有效。我似乎无法继续前进,但由于你们中的一些人说这个例子对我来说很有效。
执行此操作:if(status === "true")
或 if(status == "true")
【参考方案1】:
问题出在变量名上。当全局使用时,status
指的是window
对象的成员。 window.status
已被大多数浏览器禁用的功能所使用,因此您无法再设置它。请参阅https://developer.mozilla.org/en-US/docs/Web/API/Window.status 了解更多信息。
然后解决方案是为变量使用另一个名称(如flag
或其他名称)或将整个内容包装在一个函数中,使其成为局部变量。
【讨论】:
我从来不知道“状态”是问题所在。谢谢!以上是关于检查javascript布尔奇怪的行为的主要内容,如果未能解决你的问题,请参考以下文章