0

Web サイトにスイッチを作成しました。ライトスイッチのように機能します。人々がそれをクリックすると、背景色とテキスト段落の色が別の色に切り替わります。以下のコードを書き、タスクを正常に実行しました。

  $(".clickme").click(function () {      
     $('html').css('background-color', 'black');
     $('#top_nav a').css('color', '#ff7b00');
     $('.back_face').css('background-color', 'black');
     return false;
  });

でも今はライトをつけたい。lighton という var を作成し、それを 0 に設定しました。そして、if else ステートメントを使用してタスクを実行しようとしましたが、機能しません。以下は、私が書いて失敗したコードです。

<a href="" class="clickme">Click me</a>

<script>    
  $(".clickme").click(function () {    
  var lightoff = 0;   
  if (lightoff=0){    
      $('html').css('background-color', 'black');
      $('#top_nav a').css('color', '#ff7b00');
      $('.back_face').css('background-color', 'black');
      lightoff = 1;
      return false;    
 }else{

      $('html').css('background-color', 'white');
      $('#top_nav a').css('color', 'black');
      $('.back_face').css('background-color', 'white');
      lightoff = 0;
      return false;
   }
});

</script>

最近 JavaScript の学習を始めたばかりで、JavaScript 条件ステートメントの構文を確認しました。だから、誰かが私のコードのどこが悪いのか知っていることを願っています. どうもありがとう。

4

5 に答える 5

5

を使用する必要があります if (lightoff==0){

=は代入演算子==ですが、 は比較演算子です。

条件内で代入演算子を使用すると、代入された値が評価されるため、(lightoff=0)は常に0which に評価されてから にキャストされfalseます。条件内で代入演算子を使用する最も一般的なケースは、関数の戻り値が代入される場合です。( lightoff = checkIfLightIsOff() )

于 2013-08-02T06:00:08.200 に答える
3

lightoffコールバック メソッドへの複数の呼び出しで の値を使用する必要があるため、メソッドへの複数の呼び出しが の同じインスタンスを共有するように、ハンドラー メソッドのスコープ外で定義する必要があります。lightoff

また、@zzlalani が指摘したように、=演算子は代入を表し、必要なのはコンパレータ演算子です。==

そのはず

var lightoff = 0;

$(".clickme").click(function () {

    if (lightoff==0){

        $('html').css('background-color', 'black');
        $('#top_nav a').css('color', '#ff7b00');
        $('.back_face').css('background-color', 'black');
        lightoff = 1;
        return false;

    }else{

        $('html').css('background-color', 'white');
        $('#top_nav a').css('color', 'black');
        $('.back_face').css('background-color', 'white');
        lightoff = 0;
        return false;
    }
});
于 2013-08-02T05:59:20.273 に答える
1

私は Javascript の専門家ではありませんが、「==」の代わりに「=」を使用したようです。これにより、変数を比較する代わりに 0 が設定されます。

于 2013-08-02T06:00:36.190 に答える