2016-04-10 23 views
2

私はifステートメントを2つの条件で使用しています。何らかの理由で、背景色を赤色に変更し、黒色に変更しません。ifステートメントの背景色を確認してください

$(".circles").click(function() { 
    counter++; 
    if (counter % 2 === 0 && $(this).css("background-color")=="#FFFFFF") { 
     $(this).css("background-color", "black"); 
    } else { 
     $(this).css("background-color", "red"); 
    } 
}) 

.circlesはもともと#FFFFFFに設定されています。 どうしたのですか?

+0

'$(this).css(" background-color ")'はおそらく 'rgb(255,255,255)'になります。決して色を信じない。 – Oriol

+1

Oriolのコメントでは、色の値をテストするのではなく、信頼性の高い方法で行うことをお勧めします。与えられた背景色をCSSクラスに割り当て、 'toggleClass() 'を使ってクラスを切り替える。 –

+0

変数 'counter'の初期値は何ですか?入手したい順序は何ですか:白、黒、赤、赤、赤OR白、黒、赤、黒、赤OR何か他のものはありますか? – skobaljic

答えて

2

はおそらくあなたにrgb色をお返ししますが、それは確かではありません。

var whiteColor = $('<div/>').css({ 
 
    backgroundColor: '#fff' 
 
}).css('backgroundColor'); 
 
var counter = 0; 
 
$(".circles").click(function() { 
 
    counter++; 
 
    if (counter % 2 === 0 && $(this).css("background-color") == whiteColor) { 
 
     $(this).css("background-color", "black"); 
 
    } else { 
 
     $(this).css("background-color", "red"); 
 
    } 
 
})
.circles { 
 
    background-color: #FFFFFF; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="circles" style="background-color: #fff;"> 
 
    Click me 
 
</div>

クレジットthis answerに:あなたは、白い背景を持つ要素を作成し、そのプロパティを取得するよりも、確認したい場合。

this Fiddleでも。

+0

クラスを使用するのではなく、必要なときに色を取得するためにスタブ要素を作成するのはなぜですか? – FredMaggiowski

+0

私はそのようにはしません、私はちょうど質問に従っているので、私の答えはセンスがあります。理論的には、プログラマーはスタイルを変更することが許されないかもしれません。あるいは、より高いインスタンスからの承認を必要とするかもしれません。 – skobaljic

+0

ありがとう、私のコードをやり直すことを意味するものではなかったので、これは私にとって簡単な方法でした。 – Naomi

2

Iは、コールの実際の結果を記録しようとした:

$(this).css("background-color") 

結果(Chromeで)したrgb(255,255,255)したがって、それは文字列"#FFFFFF"異なります。

またcounterとの問題は、それが奇数だときに、赤に背景色を設定し、それは背景色が赤である偶数だとき[rgb(255,0,0)を返す]ひいてはそれが"#FFFFFF"は異なるということです。

ここにはFiddleがあります。

私は試合の異なる種類を使用して、あなたをお勧めしたい。..たとえば、あなたはクリックで授業を切り替えるとbackground-color

を変更するために追加されたクラスセレクタを使用することができますクラスを使用する代わりに$(this).css(..) == "a color string"IF条件の内側ことを意味あなたの商品が最初に持っている.whiteクラスを作成することができます。クリックされたとき、それは.whiteクラスを持っている場合、あなたは彼らがそれ故に、

クラスは、あなたのCSSファイルにbackground-colorを変更するように設定されている(クラス名は一例であり、あなたが望むようにちょうどそれらに名前を付ける)別のクラス.redを使用して、その色を変更するよりも、 「のようなものができるでしょう:あなたはcss("background-color")メソッドを使用している場合、ブラウザ

.white{ 
    background-color: #FFFFFF 
} 

.red{ 
    background-color: #FF0000 
} 
+0

問題はカウンタではありません。カウンターはそれがすべき方法で働いています。私は背景色を変えることはできたくない。私はそれが一度だけ切り替えることを望む。それが問題です。 – Naomi

+0

問題は、 'IF'条件の中でのカラーマッチングとjQueryによるカラー切り替えをどのように扱うかです。' $(this).css(..)== "color string" '。たとえば、あなたのアイテムを最初に '.white'クラスとして作成することができます。クリックしたときに、 '.white'クラスを持っていれば、別のクラス'を使ってその色を変更します。レッド '(クラス名は例ですが、あなたが望むように名前を付けてください) – FredMaggiowski

+1

ああ、今私はあなたが意味するものを得ます。うん、そうするのがいいやり方だと思うよ。それを試みるつもりです。ありがとう – Naomi

関連する問題