2010-11-23 27 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 2010-11-23 18:35:01

回答

1

您需要報價樣式屬性的不是結果值 -

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

5

不要調用函數,僅通過參考:

var t=setTimeout(changeColor2,3000); 

我想你想style.color.color

順便說一下 ......請告訴我們代碼應該實際上做什麼以及最初有什麼錯誤。

+0

我做了你提到的變化,但仍然計時器不工作,顏色變化不起作用。 – SunnyShah 2010-11-23 18:44:37

+0

你從哪裏看顏色的東西?它應該是十六進制,而不是rgb。你可以指定一個關鍵字,例如'style.color ='red'` – 2010-11-23 18:48:52

0

不知道你在做什麼,我可以告訴你,你的按鈕的onClick處理器引用了一個不在你的代碼中的方法名。從你的方法名稱來看,我認爲你的意思是把「buttonClicked」放在那裏。

沒關係,看起來像你在打字時改變了它。

0

而不是v.color = rgb(0,255,255);使用v.style.color = "#0ff"

1

1)我不喜歡你有兩個超時設置的事實。只需調用一個函數並使用一個標誌在兩個選項之間切換即可。

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); 
}