2017-05-05 8 views
-3

このコードは、テキストをクリックすると実行されます。最初の場合は動作しますが、2番目の場合は実行したくありません。Else/Else動作しない場合

if (music = true) { 
    music = false; 
    $('#musicButton').html("Music: Off") 
} 
if (music = false) { 
    music = true; 
    $('#musicButton').html("Music: On") 
} 

他にも試してみましたが、それ以外の場合は動作しませんでした。

+2

使用 '=='。今は変数を比較するのではなく、変数 'music'に代入しています。また、 'music = false'は' false'と評価されます。これが2番目のifが実行されない理由です。 – Purag

+1

'='は代入、 '=='または '==='は*等価性のテスト* ...あなたの最初のif条件は音楽にtrueを割り当て、本体を実行します。本体を決して実行しない –

+0

最初に 'music'に' true'を割り当てているので、最初は正しく動作しますが、誤って比較しています。代わりに '=='や '==='を使いたいでしょう。 –

答えて

1

繰り返しコードを削減するには、実際にはif else文を使用する必要があります。さらに、音楽をテストする代わりに割り当てます。 JavaScriptでは、===演算子を使用して2つの項目を比較する必要があります。実際には===演算子は必要ありません。なぜなら、項目が真であるかどうかをチェックしているからです。変数を()で単純にカプセル化することができます。

music = true; 
 
$("button").click(function() { 
 
    if (music) { 
 
     music = false; 
 
     $('#musicButton').html("Music: Off") 
 
    } 
 
    else { 
 
     music = true; 
 
     $('#musicButton').html("Music: On") 
 
    } 
 
}).click();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="musicButton"></div> 
 
<button>Click Me</button>

1

ほとんどの言語での比較は、double = ... 'x == y'によって行われることに注意してください。

割り当てではなく===あなたが起こって前に、また、使用する必要があり、これをfalseに変更し、以下のようにコードを変更する必要があり

0

シングル「=」で行われ、その下のようなものがあなたのために働くこと:

if (music === true) { 
    $('#musicButton').html("Music: Off"); 
    music = false; 
} else{ 
    $('#musicButton').html("Music: On"); 
    music = true; 
} 
1

=が代入演算子として使用されます。比較のため、==または===を使用する必要があります。

if (music === true) { 
    music = false; 
    $('#musicButton').html("Music: Off") 
} 
if (music === false) { 
    music = true; 
    $('#musicButton').html("Music: On") 
} 

if (music == true) { 
    music = false; 
    $('#musicButton').html("Music: Off") 
} 
else if (music == false) { 
    music = true; 
    $('#musicButton').html("Music: On") 
} 
関連する問題