我得到了这段脚本(在本地运行):
<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不工作/发送表格功能不起作用......
任何帮助将不胜感激!
谢谢!
答案 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 );