我的html文档中有以下标记:
<p id="demo1">This is my animation text</p>
<button onclick="runAnimation()">RunAnimation</button>
我已声明以下javascript代码为
标签中的文字制作动画:
function changeText(){
var text = document.getElementById("demo1").innerHTML;
text = text.substr(text.length - 1) + text.substr(0, text.length - 1);
document.getElementById("demo1").innerHTML = text;
}
`function` runAnimation(){
setInterval(changeText(), 300);
}
上面的代码不起作用,相反,当我使用匿名函数时,现在一切正常,有人可以解释我为什么吗?
function runAnimation(){
setInterval(function(){
var text = document.getElementById("demo1").innerHTML;
text = text.substr(text.length - 1) + text.substr(0, text.length - 1);
document.getElementById("demo1").innerHTML = text;
}, 300);
}
答案 0 :(得分:3)
您需要将函数本身传递给setInterval
,例如:
setInterval(changeText, 300);
相反,您已编码:
setInterval(changeText(), 300);
这会调用changeText
并将返回的值(在本例中为undefined
)传递给setInterval
。