使用setTimeout()中的变量来设置时间

时间:2014-04-05 08:20:11

标签: javascript

这里我想在tout时间超时,但是setTimeout()没有使用tout作为超时参数。 如何解决。

<script language="JavaScript" type="text/javascript">
var tout=10*1000;
var t = setTimeout(document.myform.submit(),tout));
</script>

3 个答案:

答案 0 :(得分:3)

var tout = 10 * 1000;
var t = setTimeout(function() {
    document.myform.submit();
}, tout);

了解如何正确使用setTimeout here。第一个参数应该是函数引用,第二个参数应该是毫秒。

答案 1 :(得分:2)

var delay = 60000;

var timer = setTimeout(function() {
  document.myform.submit();
}, delay);

甚至更好

var delay = 10000,
    f     = document.myform,
    timer = setTimeout(f.submit.bind(f), delay);

注意:Function.prototype.bind取决于ES5。

答案 2 :(得分:0)

你遇到的问题是你在setTimeout行调用了submit函数,并将调用它的结果传递给setTimeout。

您要做的是将对函数的引用传递给setTimeout:

var t = setTimeout(document.myform.submit, tout));

不幸的是,它并没有完全削减它,因为提交功能并不知道它被调用的形式。您还需要绑定上下文:

var t = setTimeout(document.myform.submit.bind(document.myform), tout));

Function.prototype.bind返回对函数的引用。