javascript - 你如何每隔几个轮子滴答声或每隔几秒调用一个轮子函数?

标签 javascript css scroll mousewheel

我是 JavaScript 的新手并成功地完成了这个滚轮事件,但它一直在触发,这将使我进入不同的元素并滚动到下一个元素,因为我正在使用 nextElementSibling .

我尝试过限制它,但到目前为止还没有成功,因为我对 JS 还不够好,想了解更多。

var scrollableElement = document.querySelector('body');

scrollableElement.addEventListener('wheel', findScrollDirectionOtherBrowsers);

function findScrollDirectionOtherBrowsers(event) {
  var delta;
  var aktiv = document.querySelector('.swap');

  if (event.wheelDelta) {
    delta = event.wheelDelta;
  } else {
    delta = -1 * event.deltaY;
  }

  if (delta < 0) {
    aktiv.nextElementSibling.classList.toggle('swap')
    aktiv.classList.toggle('swap')
  } else if (delta > 0) {
    aktiv.previousElementSibling.classList.toggle('swap')
    aktiv.classList.toggle('swap')
  }
}

因此,只要函数至少在 2 秒前被触发或被触发 3-4 次,结果应该立即切换 .swap。那是我所期望的,但也许您可以为我提供更好的解决方案?这一定非常棒!非常感谢你的帮助! :)

最佳答案

我只是添加了一个计数器来实现它。到目前为止工作正常。

var scrollableElement = document.querySelector('body');
//new
var i = 0;

scrollableElement.addEventListener('wheel', findScrollDirectionOtherBrowsers);

function findScrollDirectionOtherBrowsers(event) {
  var delta;
  var aktiv = document.querySelector('.swap');

  if (event.wheelDelta) {
    delta = event.wheelDelta;
    //new
    i++;
  } else {
    delta = -1 * event.deltaY;
  }
  //new && i > 15 and set back to 0
  if (delta < 0 && i > 15) {
    i = 0;
    aktiv.nextElementSibling.classList.toggle('swap')
    aktiv.classList.toggle('swap')
  //new && i > 15 and set back to 0
  } else if (delta > 0 && i > 15) {
    i = 0;
    aktiv.previousElementSibling.classList.toggle('swap')
    aktiv.classList.toggle('swap')
  }
}

关于javascript - 你如何每隔几个轮子滴答声或每隔几秒调用一个轮子函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58734177/

相关文章:

javascript - wordpress自定义模板引用外部js

javascript - 如何在 javascript 中迭代 this.value

javascript - 选择选项的工具提示或评论

html - 是否有 HTML 代码可以使我的背景图片透明而我的文本不透明?

Java SWT - 组内的 ScrolledComposite

javascript - Chrome 扩展弹出窗口不再显示

javascript - select2 没有滚动的太长列表使选择了错误的元素

html - 如何在弹出窗口中隐藏特定行

javascript - 当我在移动设备上滚动时,如何更改 <nav> 的颜色?

javascript - fullpage.js 在滚动时改变滚动方向