TypeError: $.doTimeout is not a function

TypeError: $.doTimeout is not a function

我的代码如下:

$("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 文件而不是使用 google 服务
2 添加不同的 jquery 函数(代码的顶部)以查看 jquery 是否正常工作。它是这样做的。

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

Jquery 正在运行,因为我的代码的最上面一段运行正常。

我在 Mozilla Firefox

上使用的 Jquery 版本是 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>

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

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

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

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

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

我不建议任何人这样做,因为它基本上是糟糕的编码,但它确实有效,而且由于它只是一个学校项目,我对它很满意。