如何在一段时间后执行函数

19

我想编写一段JavaScript代码,在30分钟后执行一个函数。

比如我有一个名为getScore的函数和另一个名为getResult的函数。我希望这些函数在30分钟之后被执行。

这是为了测验目的,测验持续时间为30分钟,所以在时间过去后,这两个函数应该被执行。


3
дҪ еҸҜд»ҘиҖғиҷ‘дҪҝз”ЁsetTimeout()жҲ–setInterval()иҝҷдёӨз§Қж–№жі•пјҒ :) - Henrik Andersson
1
用户在30分钟的时间内是否要停留并且不刷新页面? - VisioN
30分钟后的什么时间?(页面加载,点击按钮?) - Xavier S.
2个回答

41

您应该使用setTimeout()

setTimeout(function() {
    getScore(); 
    getResult(); 
}, 1800000);

'1800000'是以毫秒为单位的时间,表示您想要此函数执行的时间。在这种情况下,为30分钟。

2
我已经将 w3schools 的参考替换为 mdn;这里没有多少人喜欢 w3schools :) - Ja͢ck
我不知道为什么它不起作用。setTimeout(function() { getScore(this.form); getQs(); showReports();}, 10000); - 我正在使用IE 8,它兼容吗? - Rayan Sp
我怀疑 this.form 没有起到作用。你可以尝试在需要使用 this.form 的地方加上 var ctx = this;,然后使用 getScore(ctx.form) - stef
1
除了getScore(form)不工作之外,其他函数都像魔法一样工作得很好(非常感谢)。还有其他想法吗? - Rayan Sp
也许可以修改你的 getScore 函数,使其不需要传递 'form' 参数,并在调用时从 DOM 中重新获取它? - stef

-2
如果您想显示元素,可以使用此代码,这将显示按钮。
     function myFunc(){
        var linkEd = document.getElementById("buttonID");
        var timing = 6;
        var text_timing = document.createElement("span");
        linkEd.parentNode.replaceChild(text_timing, linkEd);
        var id;
        id = setInterval(function() {timing--;
      if (timing < 0) {
        clearInterval(id);
       text_timing.parentNode.replaceChild(linkEd, text_timing);
      } else {
       text_timing.innerHTML = "<h3 class='yourclass'>Button will appear after  <strong>" + timing.toString() + "</strong>  second</h3>";
      linkEd.style.display = "inline";
      }
    }, 1000);
}

这是用于显示毫秒时间的代码:

<h3 class='yourclass'>在 <strong>" + timing.toString() + " </strong> 秒后,按钮将出现</h3>


使用onclick事件调用时间和显示按钮,在时间为0后显示按钮。 使用display none来隐藏按钮

这并没有明确回答问题,而且在我看来过于复杂了。 - Oliver Hader

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接