Javascript setTimeout不处理我的onlick事件

Javascript setTimeout不处理我的onlick事件,javascript,jquery,function,settimeout,Javascript,Jquery,Function,Settimeout,我只需要在点击按钮5秒钟后运行一个函数 控制台显示以下消息: VM9200:1未捕获引用错误:getId未定义在:1:1 函数getId(){ $.getJSON(“https://maxtechglobal.com/vencimientos/perfil/perfil.php?cuit=“+$(“#cuit”).val(),函数(结果){ 对于(var i=0;i

我只需要在点击按钮5秒钟后运行一个函数

控制台显示以下消息:

VM9200:1未捕获引用错误:getId未定义在:1:1

函数getId(){ $.getJSON(“https://maxtechglobal.com/vencimientos/perfil/perfil.php?cuit=“+$(“#cuit”).val(),函数(结果){ 对于(var i=0;i
客车
给你-工作示例

函数getId(){ 警报(“功能”); }


客车
给你一个解决方案

$('btnBuscar')。单击(函数(){
setTimeout(函数(){
$.getJSON(“https://maxtechglobal.com/vencimientos/perfil/perfil.php?cuit=“+$(“#cuit”).val(),函数(结果){
对于(var i=0;i

使用*
事件属性时,需要在窗口范围下声明Buscar
getId()
。我打赌你已经把它放在document.ready处理程序下了

还请注意,通过将函数引用传递给超时,并使用一个不引人注目的事件处理程序而不是过时的*属性,可以改进代码并避免此问题。试试这个:

函数getId(){ log('called!'); //这里是您的AJAX逻辑。。。 } $(函数(){ $('#btnBuscar')。单击(函数(){ setTimeout(getId,5000); }); });


Buscar
setTimeout接受对函数的引用作为第一个参数。 这可以是函数的名称:

function explode(){
   console.log('called!');
}
setTimeout(explode, 5000);
var explode = getId(){
   console.log('called!');
};
setTimeout(explode, 5000);
setTimeout(getId(){
   console.log('called!');
}, 5000);
引用函数的变量:

function explode(){
   console.log('called!');
}
setTimeout(explode, 5000);
var explode = getId(){
   console.log('called!');
};
setTimeout(explode, 5000);
setTimeout(getId(){
   console.log('called!');
}, 5000);
或匿名函数:

function explode(){
   console.log('called!');
}
setTimeout(explode, 5000);
var explode = getId(){
   console.log('called!');
};
setTimeout(explode, 5000);
setTimeout(getId(){
   console.log('called!');
}, 5000);
还可以向setTimeout传递一个要执行的代码字符串:

setTimeout("console.log('called!');", 5000);

当您在*事件属性上使用
时,需要在窗口范围下声明
getId()。我打赌你已经把它放在document.ready处理程序下了。还请注意,您可以通过将函数引用传递给timeout来改进代码:
setTimeout(getId,50000)该代码应该在没有引用jQuery的情况下工作。我的猜测是,这不是您的实际代码,您的实际代码有一个文档包装器。请添加您给出的答案的描述。这不是我第一次看到你这么做。重复回答不会教育任何人。@Rorymcrossan谢谢。我补充道,但我正在考虑如何放置。目前为止最好的解决方案。