检查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布尔奇怪的行为的主要内容,如果未能解决你的问题,请参考以下文章

Javascript赋值运算符奇怪的行为

JavaScript递归奇怪的行为?

检查是不是设置了 Javascript 布尔值? [复制]

for() 的奇怪 javascript 行为

Photoshop Javascript 的奇怪行为

多维布尔数组检查Javascript中是不是全部为真