$(document).ready(function(){
function sample() {
alert("This is sample function");
}
$("#button").click(function(){
t = setTimeout("sample()",2000);
});
});
HTML:
<input type="button" id="button" value="Call sample function with delay">
单击按钮后,sample()
函数不会被调用,延迟时间为2秒。我不知道出了什么问题。
如何通过jQuery使用setTimeout()
调用JavaScript函数?
答案 0 :(得分:84)
由于您在传递给sample
的匿名函数中声明了ready
,因此它的作用域是该函数。
然后将字符串传递给setTimeout
,{2}后eval
。这发生在当前范围之外,因此无法找到该功能。
仅将函数传递给setTimeout
,使用eval效率低且难以调试。
setTimeout(sample,2000)
答案 1 :(得分:34)
function sample() {
alert("This is sample function");
}
$(function() {
$("#button").click(function() {
setTimeout(sample, 2000);
});
});
如果要封装sample()
,请将整个内容包装在自调用函数(function() { ... })()
中。
答案 2 :(得分:16)
非常简单,只需使用setTimeout()
在特定的毫秒内调用该函数setTimeout(myFunction, 2000)
function myFunction() {
alert('Was called after 2 seconds');
}
或者您甚至可以在超时内启动该功能,如下所示:
setTimeout(function() {
alert('Was called after 2 seconds');
}, 2000)