scrollLeft可以通过“click”事件而不是“mousewheel”事件来更改

时间:2016-02-29 15:58:01

标签: javascript mousewheel

所以基本上我已经制作了一个自定义元素,它可以做这样的事情:

var target = document.getElementById(self.getAttribute("for"));

self.querySelector(":scope > main:first-child").addEventListener("click", function () {
    target.scrollLeft -= 400;
});

self.querySelector(":scope > main:last-child").addEventListener("click", function () {
    target.scrollLeft += 400;
});

target.addEventListener("mousewheel", function (e) {
    if (e.wheelDelta < 0) {
        target.scrollLeft += 400;
    } else {
        target.scrollLeft -= 400;
    }
});

一般来说,这个自定义元素中有两个主要元素,只要是“for”属性。单击主元素时,“for”指定的元素将水平滚动。滚动鼠标滚轮时应该发生同样的事情。但是,主要元素工作正常,而鼠标滚动仍然失败。

我制作了几个控制台日志来跟踪内容。当mousewheel事件被正确触发时,target.scrollLeft始终为0.始终锁定为0.再次,它通过“click”事件正确更改。

这个奇怪的问题一直困扰着我好几天,有谁知道为什么?谢谢!

1 个答案:

答案 0 :(得分:0)

没关系,我错过了那里的e.preventDefault()。添加后一切正常。