2011-10-25 6 views
0

私は、段落の背景を黄色に変更し、次にクリックするとピンクに変更する基本的なJavaScriptを作成しようとしています。この基本的なJavaScriptコードの問題点は何ですか?

<p id="foo">Hello, people!</p> 

、スクリプト最初のクリックで黄色に

window.onload = function(){ 
var foo = document.getElementById("foo"); 
foo.onclick = function(){ 
     if(foo.style.background!=="yellow")foo.style.background = "yellow"; 
     if(foo.style.background === "yellow") foo.style.background = "pink"; 
}; 
}; 

色の変化であるが、私はもう一度クリックしたときには、ピンク色にない変更を行います。私は問題を理解することはできません。

+1

これはjQueryを使って行う必要があるのでしょうか? – BoltClock

+0

最も簡単なことは、警告(foo.style.background)またはconsole.log(foo.style.background)をonclick関数にスティックして、毎回その値が何かを確認することです。 – Tom

+1

内部的には、ブラウザが文字列 "黄色"とは異なる表現を使用して背景を示すことがあります。 'console.log(foo.style.background)'を実行して、実際に何が表示されるかを確認します。 –

答えて

7

EDITに

if(foo.style.background === "yellow") 

を変更してみてください:backgroundを使用しないでください、使用backgroundColor

Fixed example

if(foo.style.background!=="yellow")foo.style.background = "yellow"; 
    if(foo.style.background === "yellow") foo.style.background = "pink"; 
if(foo.style.background!=="yellow")foo.style.background = "yellow"; 
    else if(foo.style.background === "yellow") foo.style.background = "pink"; 

あなたが黄色に変更するので、それが黄色だかどうかをチェックし、それはあなたがあなたの比較をやっている方法が原因かもしれませんそれピンク

+1

ここでは、中かっこ、改行、および/または他のブロックでの字下げを使用するもう1つの理由があります。 – BoltClock

+0

いいえ、それは 'else'でも動作しません。それ以外の場合でも、同じことをするべきです。 – Jatin

+0

@Jatin:いいえ、そうすべきではありません。 'else'を追加し、何かがあればそれを保つ必要があります。 – BoltClock

0

この

if(foo.style.background == "yellow") 
+0

@IAbstractDownvoteFactorが実際に問題を発見しました – Matias

0

作る:すべき人のニーズ

foo.onclick = function(){ 
     if(foo.style.background != "yellow") foo.style.background = "yellow"; 
     if(foo.style.background == "yellow") foo.style.background = "pink"; 
};

"!=="と "==="の代わりに "!="と "=="を使用することに注意してください。

+0

私はこれらの変更を行いましたが、それでも動作しません。 – Jatin

0

試してみてください。

var foo = document.getElementById("foo"); 
foo.onclick = function(){ 
     if(foo.style.background!="yellow")foo.style.background = "yellow"; 
     else if(foo.style.background =="yellow") foo.style.background = "pink"; 
}; 

http://jsfiddle.net/AvKPE/

var foo = document.getElementById("foo"); 
foo.onclick = function(){ 
     if(foo.style.backgroundColor!="yellow")foo.style.backgroundColor = "yellow"; 
     else if(foo.style.backgroundColor =="yellow") foo.style.backgroundColor = "pink"; 
}; 

http://jsfiddle.net/AvKPE/2/

+0

これはChromeでは動作しますが、Firefoxでは動作しません。 – Jatin

+0

問題は、Firefoxが背景のプロパティ全体を返すという問題です:0%0%fixed ... yellow ...新しいリンクを試してください:http://jsfiddle.net/AvKPE/2/ – andlrc

関連する問題