JavaScript设置超时不';行不通
我想要一个JavaScript函数在页面加载60秒后运行。 经过一番研究,我发现setTimeout()就是解决方案 我就是这么做的: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
<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秒后尝试执行的内容。最有可能的情况是,这将是未定义的noooosetInterval
,而不分配间隔id。。。那就错了!这将创建一个无限循环!继续@Martin,我想你可以把这个代码粘贴到你的控制台:)是的,但不能太远,以防止出现这种情况。对不起,这得到了-1:第一个建议导致了一个无限循环,而你建议的解决方案是设置一个全局变量-只需使用setTimeout
,这就是它的用途好的,我想是睡觉时间:(我是:
@IdoDoron:很高兴能帮上忙,很高兴编写代码太好了!为我工作,+1整洁和贴切。谢谢:)thanx也为我工作了+1
setTimeout(function() { postAction('news.reads', 'article'); }, 60000);
var result = postAction('news.reads', 'article');
setTimeout(result, 60000);