2016-05-03 7 views
0

私はjavascriptを使いました、だから私の問題は何かを理解する助けてください。if else文の助手が必要です

setTimeout(function() { 
    var wide = false; 
    if(wide = false) { 
     document.querySelector(".some-class").onclick = function() { 
      document.querySelector("#some-id").className += " MyClass"; 
      wide = true; 
     }; 
    } 
    else { 
     document.querySelector(".some-class").onclick = function() { 
      document.querySelector("#some-id").className = 
      document.querySelector("#some-id").className.replace(/\bMyClass\b/,''); 
      wide = false; 
     }; 
    } 
}, 1000); 

これは機能しません(MyClassを追加しない)。しかし、私がちょうどこれを使用する場合:

setTimeout(function() { 
document.querySelector(".some-class").onclick = function() { 
document.querySelector("#some-id").className += " MyClass"; 
}; 
}, 1000); 

それはうまく動作します。では、私のコードがうまくいかない問題は何ですか?

PS: ありがとうございます。この私が得たもの:

それが働いた
setTimeout(function() { 
    var wide = false; 
    if(wide == false) { 
     document.querySelector(".some-class").onclick = function() { 
      document.querySelector("#some-id").className += " MyClass"; 
      wide = true; 
     }; 
    } 
    else { 
     document.querySelector(".some-class").onclick = function() { 
      document.querySelector("#some-id").className = 
      document.querySelector("#some-id").className.replace(/\bMyClass\b/,''); 
      wide = false; 
     }; 
    } 
}, 1000); 

が、今それが唯一のそれぞれのonclickイベントではMyClassを追加し、それを除去しません。私はelseifとのやり取りを試みて、wide = flasewide = trueをonclickイベントの外に移動しようとしましたが、これは同じです。

+4

'wide == false'。比較には二重等価を使用してください。 – Jerry

+0

'onclick'の関数がifステートメントの下にあるので、あなたのコードはまだ動作していません。したがって、最初の実行後にifステートメントは無効になります。より良いものにするには:クラスがワイドかどうかを検出し、それに基づいて特定のコードを実行する新しい関数に 'onclick'を設定してください。 – Jerry

答えて

0

if(wide === false) {...}

への変更あなたが平等のための2つの値を比較していない、falseに等しいwideを設定している=使用している場合。あなたの場合は、==または===のいずれかを使用して同等かどうかを確認できます。

前者(==)は値を比較し、後者(===)は値+型を比較します。

+0

ありがとうございます。私は自分の投稿を編集します。私のコードには何か間違いがあります。 – koninas

1

問題は次のとおりです。if (wide = false) {... これは値を比較しないでwidefalseに設定しています。

値を比較するには、==または===を使用してください。

  • シングルイコール - >変数の定義/設定。

  • 倍精度 - >型変換との比較。例:("2" == 2) // true

  • トリプルイコール - >型変換なしの比較。例:("2" === 2) // false

問題の場合は、2つまたは3つの等しいを使用できます。

+0

ありがとう、私のポストを見てください、私はまだ何か間違っている – koninas

関連する問題