0

我正在阅读 Javascript 的教程。我正在测试Boolean()函数和 If...Else 条件。

我在网站上有一个按钮。当我单击按钮时,它会显示布尔变量 ( myvar) 的当前状态以及相应的状态 ( myvartxt)(即false表示“关闭”,true表示“打开”)。这样做的原因是因为我想稍后打开/关闭 LED,并且不希望它说假/真,而是说开/关。

现在的问题是,当我单击按钮时,布尔值 (myvar) 的状态为 false,这是正确的,但 myvartxt 变量在应该显示为 OFF 时为 ON。我只是不明白。有任何想法吗?提前感谢您的帮助!

在这里快速测试代码:

<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<p id="demo1"></p>

<button onclick="myFunction()">Try it</button>

<script type="text/javascript">
function myFunction()
{
    //Initial state
    var myvar=new Boolean(0);
    var myvartxt = "OFF";

    //display current state of Boolean
    var x=document.getElementById("demo");
    x.innerHTML=myvar.toString();

    //display corresponding ON -> true, OFF -> false
    if (myvar) //INITIALLY THIS IS false (not a string) so why does it think this is true?
    {
        myvartxt = "ON"; 
    }
    else
    {
        myvartxt = "OFF";
    }

    var y=document.getElementById("demo1");
    y.innerHTML=myvartxt;
}

</script>

</body>
</html>
4

3 回答 3

0

代码if (myvar)是错误的,它只是检查是否myvar设置。你必须改变陈述

if (myvar.toString() == true)
于 2012-08-18T00:47:08.917 回答
0

您正在使用new Boolean();创建一个新对象 JavaScript 中的对象评估为true.

我认为,如果您放弃new关键字并Boolean()仅将其用作函数,您会看到行为更符合您的预期。

于 2012-08-18T00:47:50.423 回答
0

首先,jQuery

这可以这样重写:

// Perform logic when document is set and ready.
$(document).ready(function() { 
  var myvar = false; // No need for Boolean objects.
  $("demo").html(myvar.toString()); // Set the value of demo.
  myvar ? $("demo1").html("ON") : $("demo1").html("OFF"); // True/false ON/OFF in demo1
}

此外,JavaScript 不适合相等性测试,请看这里,如果有机会,请阅读这里

于 2012-08-18T00:51:49.660 回答