我是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>
答案 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"
。