setTimeout无法处理我的onlick事件

时间:2017-08-11 13:33:37

标签: javascript jquery function settimeout

我需要在点击按钮后仅运行一个功能。

控制台告诉我这条消息:

  

VM9200:1未捕获的ReferenceError:getId未定义为:1:1



function getId() {
  $.getJSON("https://maxtechglobal.com/vencimientos/perfil/perfil.php?cuit="+$("#cuit").val(), function(result){
    for (var i = 0; i < result.data.length; i++) {
      $.each(result.data[i].perfil, function( index, value ) {
        var id = result.data[i].perfil.id;
        $("#idPerfil").val(id);
      });
    }
  });
}
&#13;
<button id="btnBuscar" onclick="setTimeout('getId()', 5000);" type="button" class="btn btn-primary text-center" name="button">Buscar</button>
&#13;
&#13;
&#13;

我证明了这一点:setTimeout(getId, 5000);以及此setTimeout("getId();", 5000);和此:setTimeout('getId', 5000);

但是一切正常

4 个答案:

答案 0 :(得分:2)

您可以使用解决方案

&#13;
&#13;
$('#btnBuscar').click(function(){
  setTimeout(function(){
    $.getJSON("https://maxtechglobal.com/vencimientos/perfil/perfil.php?cuit="+$("#cuit").val(), function(result){
      for (var i = 0; i < result.data.length; i++) {
        $.each(result.data[i].perfil, function( index, value ) {
          var id = result.data[i].perfil.id;
          $("#idPerfil").val(id);
        });
      }
    });
  }, 5000);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="btnBuscar" type="submit" class="btn btn-primary text-center" name="button">Buscar</button>
&#13;
&#13;
&#13;

由于您是jQuery,因此我使用了jQuery点击事件。

$('#btnBuscar').click(function(){});

我在setTimeout方法&amp; {}中使用click在其中添加了代码行(而不是关闭另一个函数)。

答案 1 :(得分:2)

使用 GET /_search { "query": { "function_score": { "filter": { "term": { "city": "Barcelona" } }, "functions": [ { "filter": { "term": { "features": "wifi" }}, "weight": 1 }, { "filter": { "term": { "features": "garden" }}, "weight": 1 }, { "filter": { "term": { "features": "pool" }}, "weight": 2 } ], "score_mode": "sum", } } } 事件属性时,需要在窗口范围内声明

filter。我打赌你把它放在了document.ready处理程序之下。

另请注意,您可以通过将函数 reference 传递给超时并使用不显眼的事件处理程序而不是过时的getId()属性来改进代码并避免此问题。试试这个:

&#13;
&#13;
on*
&#13;
on*
&#13;
&#13;
&#13;

答案 2 :(得分:0)

在这里 - 工作示例

function getId() {
  alert('function');
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="btnBuscar" onclick="setTimeout(getId, 3000);" type="button" class="btn btn-primary text-center" name="button">Buscar</button>

答案 3 :(得分:0)

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

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);