TypeError:$ .doTimeout不是函数

时间:2018-04-04 12:28:58

标签: javascript jquery laravel timeout synchronous

我的代码如下:

$("p").click(function(){
  $(this).hide();
})

  $.doTimeout('myLoop', 5000, function() {
      ++i;
        timeleft = calctime(id, jsondata);
        document.getElementById("timeleft").innerHTML = timeleft;
      /* From the docs: "If the callback returns true, the doTimeout loop will execute again, after the delay, creating a polling loop until the callback returns a non-true value." */
      return i == 50 ? false : true;
  });
};

JS在我的laravel服务器中实现,因此可能会导致问题。

我尝试过以下事项:

1下载jquery文件而不是使用谷歌服务
2添加一个不同的jquery函数(代码的顶部)来查看jquery是否正常工作。它做的。

我的目标是创建一个具有同步延迟的循环(与javascripts异步setTimeout不同),因此代码每5秒运行一次循环。

Jquery正在工作,因为我的代码的顶层部分正常运行。

我正在使用的Jquery是Mozilla Firefox上的3.3.1版本

任何人都可以提供一些信息,为什么doTimeout不工作?

好吧所以我制作了这个片段,但在这里我不认为doTimeout库工作正常,因为我现在收到两个错误。希望它有所帮助



var i = 0;
$.doTimeout( 100, function(){
  i++;
  document.getElementById("counter").innerHTML = i;
});

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-dotimeout/1.0/jquery.ba-dotimeout.min.js"></script>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="counter"></div>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:1)

你可以download dotimeout插件。因为它不是jQuery核心的一部分。 然后将其注入script标记。错误将在消失后消失。

答案 1 :(得分:0)

我在不使用doTimeout的情况下解决了这个问题。

function fuckit(timeleft, id, jsondata){
  setTimeout(function(){

      timeleft = calctime(id, jsondata);
      document.getElementById("timeleft").innerHTML = timeleft;
      fuckit(timeleft, id, jsondata);
  }, 1000);
}

它本身就是一个函数调用。

我不建议任何人这样做,因为它基本上是错误的编码,但它有效,因为它只是一个学校项目我很满意。