【问题标题】:Checking for javascript booleans weird behavior检查javascript布尔奇怪的行为
【发布时间】: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")

标签: javascript


【解决方案1】:

问题出在变量名上。当全局使用时,status 指的是window 对象的成员。 window.status 已被大多数浏览器禁用的功能所使用,因此您无法再设置它。请参阅https://developer.mozilla.org/en-US/docs/Web/API/Window.status 了解更多信息。

然后解决方案是为变量使用另一个名称(如flag 或其他名称)或将整个内容包装在一个函数中,使其成为局部变量。

【讨论】:

  • 我从来不知道“状态”是问题所在。谢谢!
猜你喜欢
  • 1970-01-01
  • 2012-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-01
  • 2021-12-31
  • 2015-09-11
  • 2011-07-15
相关资源
最近更新 更多