angularjs clearTimeout()并将其设置为0 [已关闭]

hyrbngr7  于 2022-11-21  发布在  Angular
关注(0)|答案(1)|浏览(146)

已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题吗?**通过editing this post添加详细信息并阐明问题。

3天前关闭。
Improve this question
我做了这个函数来修改一个库。这个函数只对1有效,因为计数器不会重置为0。

myFunction(linkBox) {
  const redirect = document.getElementById("href-id").href;
  let draggingImgs = false;
  let timer;

  linkBox.addEventListener("mousedown", () => {
    console.log(timer, "mousedown event");
    timer = setTimeout(() => {
      draggingImgs = true;
    }, 500);
  });
  linkBox.addEventListener("mouseup", () => {
    if (draggingImgs === false) {
      window.location.href = redirect;
    } else {
      document.body
        .querySelectorAll(".swiffy-slider")
        .forEach((sliderElement) => this.initSlider(sliderElement));
    }
    clearTimeout(timer); // Timer is not resetting
    console.log(timer);
  });
}

我试过了,在clearTimeout(计时器)之后:

  • timer = null;
  • timer = 0;
rjee0c15

rjee0c151#

计时器重置正常:只不过一旦将draggingImgs设置为true,它就不会再被设置为false了。在鼠标出现后,需要再次将draggingImgs重置为false。在调用clearTimeout之前或之后添加以下代码:

draggingImgs = false;

下面是一个实际应用的例子。
第一次

相关问题