setInterval函数javascript中的匿名函数

时间:2016-07-21 11:16:43

标签: javascript html

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

1 个答案:

答案 0 :(得分:3)

您需要将函数本身传递给setInterval,例如:

setInterval(changeText, 300);

相反,您已编码:

setInterval(changeText(), 300);

这会调用changeText并将返回的值(在本例中为undefined)传递给setInterval