鼠标悬停时图像停止切换,但鼠标悬停时恢复

时间:2020-05-11 22:25:30

标签: javascript html toggle mouseover mouseout

我有可以在彼此之间切换的图像,当您将鼠标悬停在它们上面时,它们会停止,但是当您移开鼠标时,它并不想恢复切换。我在做什么错了?

<script>
   var t;

  addEventListener("load", () => {
    var index = 0;
    const slides = document.querySelectorAll(".slides");
    const classHide = "slides-hidden",
      count = slides.length;
    nextSlide();
    function nextSlide() {
      slides[index++ % count].classList.add(classHide);
      slides[index % count].classList.remove(classHide);
      t = setTimeout(nextSlide, 500);
    }
  });

   $(".portfolio-image").mouseover(function () {
    if (t) {
      t = clearTimeout(t);
  }
  });

  $(".portfolio-image").mouseout(function () {
    if (t) {
      t = setTimeout(nextSlide, 500);
  }
  });

3 个答案:

答案 0 :(得分:0)

也许对您有帮助:

$(".portfolio-image").mouseover(function () {
    if (t) {
      clearTimeout(t);
  }
  });

答案 1 :(得分:0)

问题是“ setTimeout”被调用一次,您想使用“ setInterval”和“ clearInterval”代替。

答案 2 :(得分:0)

好的,我在你们的一些帮助下解决了它。 setInterval更好地完成了此任务,我不得不将其置于与变量 t 相同的作用域,因为它未被读取。

  var t;

  addEventListener("load", () => {

    var index = 0;
    const slides = document.querySelectorAll(".slides");
    const classHide = "slides-hidden",
      count = slides.length;
    nextSlide();
    t = setInterval(nextSlide, 500);
    function nextSlide() {
      slides[index++ % count].classList.add(classHide);
      slides[index % count].classList.remove(classHide);
    }

   $(".portfolio-image").mouseover(function () {
      clearInterval(t);
  });

  $(".portfolio-image").mouseout(function () {
    t = setInterval(nextSlide, 100);
  });

  });

谢谢!