0

私はJavascriptのチュートリアルを進めています。Boolean()関数とIf...Else条件をテストしていました。

Webサイトにボタンが1つあります。ボタンをクリックすると、ブール変数の現在の状態(myvar)と対応する状態(myvartxt)が表示されます(つまりfalse、「オフ」をtrue意味し、「オン」を意味します)。これは、後でLEDのオン/オフを切り替えて、false / trueではなく、ON/OFFと表示したいためです。

ここで問題となるのは、ボタンをクリックするとブール値(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 に答える