JavaScript设置超时不';行不通

JavaScript设置超时不';行不通,javascript,jquery,settimeout,onload,Javascript,Jquery,Settimeout,Onload,我想要一个JavaScript函数在页面加载60秒后运行。 经过一番研究,我发现setTimeout()就是解决方案 我就是这么做的: <body onLoad="setTimeout(postAction('news.reads', 'article'), 60000);"> 不知何故,setTimeout不起作用。加载页面后,无需等待60秒,因为postAction()会立即运行 为什么会这样?如何解决?上面有setTimeout()的替代方法吗? 谢谢大家! 您使用的是s

我想要一个JavaScript函数在页面加载60秒后运行。 经过一番研究,我发现setTimeout()就是解决方案

我就是这么做的:

<body onLoad="setTimeout(postAction('news.reads', 'article'), 60000);">

不知何故,setTimeout不起作用。加载页面后,无需等待60秒,因为postAction()会立即运行

为什么会这样?如何解决?上面有setTimeout()的替代方法吗?
谢谢大家!

您使用的是
setTimeout

setTimeout(function(){alert("OK");}, 1000 * 60); // alert "OK" in 60s

函数doSomeJavascript(){
//javascript代码在这里
警报('5秒结束!');
}
//在页面加载5秒后调用函数doSomeJavascript()
var interval=setInterval(doSomeJavascript,5000);
setTimeout(函数(){
窗口。清除间隔(间隔);
}, 5000);

在JS中执行所需操作的正确方法,即在加载页面后设置超时:

(function(w)
{
    var load = function()
    {
         setTimeout(postAction,60000);
         if (w.removeEventListener)
         {//remove listeners, to avoid leak...
             return w.removeEventListener('load',load,false);
         }
         return w.attachEvent('onload',load);
    };
    if (w.addEventListener)
    {
        return w.addEventListener('load',load,false);
    }
    return w.attachEvent('onload',load);
}(this));

而不是
window.onload=function(){setTimeout(postAction,60000);},这也会起作用,但会导致IE中的mem泄漏您需要在函数中包装
postAction
,以延迟执行:

setTimeout(function() { postAction('news.reads', 'article'); }, 60000);
实际上,您正在立即执行
postAction
,您的代码相当于:

var result = postAction('news.reads', 'article');

setTimeout(result, 60000);

嗯,请提供一些代码示例……它可以是任何内容:您是否将
postAction
postAction()
作为
setTimout
的第一个参数传递?第二个是错误的。是否传递字符串作为第一个参数?不要。超时以毫秒为单位,而不是以秒为单位:因此,60秒写为60000。对不起,我之前发布了我的代码,但忘记将其标记为“代码”,因此它被删除了。。。现在我再次添加了代码示例。您不是在60秒后使用代码片段调用函数,而是调用函数的返回值:
postAction(argument,argument)
是函数调用,它返回的任何内容都是
setTimeout
将在60秒后尝试执行的内容。最有可能的情况是,这将是未定义的noooo
setInterval
,而不分配间隔id。。。那就错了!这将创建一个无限循环!继续@Martin,我想你可以把这个代码粘贴到你的控制台:)是的,但不能太远,以防止出现这种情况。对不起,这得到了-1:第一个建议导致了一个无限循环,而你建议的解决方案是设置一个全局变量-只需使用
setTimeout
,这就是它的用途好的,我想是睡觉时间:(我是:
@IdoDoron:很高兴能帮上忙,很高兴编写代码太好了!为我工作,+1整洁和贴切。谢谢:)thanx也为我工作了+1
setTimeout(function() { postAction('news.reads', 'article'); }, 60000);
var result = postAction('news.reads', 'article');

setTimeout(result, 60000);