颜色循环元素不起作用?

时间:2010-11-23 18:32:58

标签: javascript

我是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>

5 个答案:

答案 0 :(得分:5)

不要调用该函数,仅传递引用:

  var t=setTimeout(changeColor2,3000);

我认为您希望style.color不是.color

顺便说一下 ...请告诉我们代码实际上应该做什么以及最初出了什么问题。

答案 1 :(得分: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);
}

答案 2 :(得分:1)

您需要引用样式属性值 -

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

答案 3 :(得分:0)

我真的不知道你要做什么,我可以告诉你,你的按钮的onClick处理程序引用了一个不在你代码中的方法名。根据你的方法的名称来判断,我认为你的意思是将“buttonClicked”放在那里。

没关系,看起来你在打字时改了它。

答案 4 :(得分:0)

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