2010-11-23 7 views
1

私はJavaScriptの初心者です。下のコードで何が問題なのか教えてください。要素のカラーサイクリングが機能していませんか?

ボタンが押されると、buttonPressed()が呼び出されます。 buttonPressed()から、changeColor1()changeColor1()を呼び出すと、段落のテキストの色を変更し、changeColor2()を呼び出すタイマーを開始する必要があります。同様にchangeColor2()も色を変更し、タイマーの有効期限が切れるとchangeColor1()を呼び出す必要があります。

<html> 
<head> 
<script type="text/javascript"> 

function changeColor2() 
{ 
    alert("2"); 
    var v = document.getElementById("onet"); 
    v.style.color = rgb(0,255,255); // this statement is not working 
    var t=setTimeout(changeColor1,3000); 
} 

function changeColor1() 
{ 
    alert("1"); 
    var v = document.getElementById("onet"); 
    v.style.color = rgb(255,255,0); // this statement is not working 
    var t=setTimeout(changeColor2,3000); 
} 

function buttonPressed() 
{ 
alert("Hello"); 
changeColor1(); 
} 
</script> 
</head> 

<body> 
<p id="onet"> Hello how are you? </p> 
<form> 
<input type="button" value="Display alert box!" onClick="buttonPressed()" /> 
</form> 
</body> 

</html> 
+3

実行するコードは何ですか?代わりにそれは何をするのですか?この宿題ですか? – cdhowie

答えて

1

あなたは引用スタイルプロパティに必要な関数呼び出しの結果ではない値 -

v.style.color = 'rgb(255,255,0)';

5

は、機能を呼び出すだけの参照を渡さないでください:

var t=setTimeout(changeColor2,3000); 

私はあなたがstyle.colorない.colorをしたいと思います。

ところで ...コードが実際に何をしているのか、何が間違っているのか教えてください。

+0

私はあなたの言及した変更を行いましたが、まだタイマーが機能しておらず、色の変更が機能していません。 – SunnyShah

+0

あなたはどこで色を見ましたか?それはrgbではなく16進数でなければなりません。 'style.color = 'red''のようにキーワードを指定することができます。 –

+0

rgb()で色を提供できないのはなぜですか? – SunnyShah

0

何をしようとしているのか分かりませんが、ボタンのonClickハンドラがコードにないメソッド名を参照していることがわかります。あなたのメソッドの名前で判断すると、あなたはそこに "buttonClicked"を置くことを意味すると思います。

あなたが入力している間にあなたが変更したように見えません。

0

v.color = rgb(0,255,255);の代わりにv.style.color = "#0ff"を使用してください。

1

1)私は2つのタイムアウトが設定されているというのは嫌いです。ただ一つの関数を呼び出し、フラグを使って2つのオプションを切り替えます。

2)使用したいのsetTimeoutのパラメータは、関数ポインタ(changeColor)(changeColor()

var flag = false; 
var t; 

function changeColor() 
{ 
    var v = document.getElementById("onet"); 
    if(flag){ 
    v.color = rgb(255,255,0); 
    } else { 
    v.color = rgb(0,255,255); 
    } 
    flag = !flag; 
} 

function buttonPressed() 
{ 
alert("Hello"); 
t=setInterval(changeColor,3000); 
} 
+0

こんにちはjd、あなたは本当です、私はその部分を編集しました、あなたが私の現在のコードで私にエラーを指摘するなら、私は感謝します、私はシステムプログラマーですのでJS構文を学びたいです。 :-) – SunnyShah

+0

私は私の答えを編集しました。あなたは何をしようとしているのsetTimeoutではなく、setIntervalを使用している必要があります。 –

関連する問題