JavaScript - SetInterval无法正常运行

时间:2010-10-31 17:23:43

标签: javascript

我得到了这段脚本(在本地运行):

<script>

last = 0;

function uploadnew(){

var randomnumber=Math.floor(Math.random()*6);
if(randomnumber != last){
    document.forms['f'+randomnumber].submit();
} else { uploadnew(); }

}

setInterval (uploadnew(), 1000*60*5);

</script>

但似乎setInterval不工作/发送表格功能不起作用......

任何帮助将不胜感激!

谢谢!

4 个答案:

答案 0 :(得分:10)

您需要在函数上调用setInterval()而不用括号,如下所示:

setInterval(uploadnew, 1000*60*5);

使用括号,您将立即调用 并指定结果undefined)以间隔运行,而不是使用括号传递函数本身,而不是函数的结果

答案 1 :(得分:5)

您需要在setInterval调用中删除()之后的uploadnew

setInterval (uploadnew, 1000*60*5);

在JavaScript中,函数是可以传递给其他函数的第一类对象。在此示例中,您希望将函数本身传递给setInterval,而不是先调用它然后传递其返回值。

建议不要使用setInterval ("uploadnew()", 1000*60*5);,因为它是eval的“隐藏”形式。 Eval is evil and you shouldn't use it if you don't have to.

答案 2 :(得分:3)

您需要传递对函数的引用,而不是调用它。

此:

setInterval (uploadnew(), 1000*60*5);

应该是:

setInterval (uploadnew, 1000*60*5);

如果您按原样调用它,则需要将uploadnew() 返回一个函数传递给setInterval

function uploadnew() {
    return function(){
        var randomnumber=Math.floor(Math.random()*6);
        if(randomnumber != last) {
            document.forms['f'+randomnumber].submit();
        } else { uploadnew()(); }
    }
}

请注意对递归调用的更改。

答案 3 :(得分:2)

使用

setTimeout ( expression, timeout );