鼠标滚轮上的JS scrollIntoView函数不起作用

时间:2019-01-11 17:16:52

标签: javascript html

我有上面的脚本,该脚本在浏览器控制台上输出正确的ID,但没有滚动:

SELECT *
FROM INFROMATION_SCHEMA.TABLES
WHERE table_name LIKE 'table-name-%'

我正在使用以下结构:

var divID = null;
var up = null;
var down = null;

function div(x) {
    switch(x.id) {
        case 's1':
            up = null;
            down = 's2';
            break;
        case 's2':
            up = 's1';
            down = 's3'
            break;
        case 's3':
            up = 's2';
            down ='s4';
            break;
        case 's4':
            up = 's3';
            down = null;
            break;
        default:
            up = null;
            down = null;
            break;
    }
}

window.addEventListener('wheel', function(e) {          
    if (e.deltaY < 0 && up) {
        console.log(up);
        document.getElementById(up).scrollIntoView();
    }
    if (e.deltaY > 0 && down) {
        console.log(down);
        document.getElementById(down).scrollIntoView();
    }
});

正如我所说,console.log会打印它应该显示的内容,但是滚动什么也没做,只是常规滚动。 如果有问题,我正在使用wordpress。

1 个答案:

答案 0 :(得分:0)

这里的问题是,在某些浏览器和操作系统中,滚动到某个元素不会激活该元素的悬停状态。另外,如果有人拖动滚动条,它将永远不会激活您的悬停。

这里的悬停对象告诉滚动事件要去哪里,但是它们需要悬停操作才能有效。您最好找到具有offsetTop值的正确元素,而不是在滚动过程中要求第二个事件。

[edit]否则滚动事件的滚动将覆盖scrollIntoView方法的潜力。由于似乎您只想进行滚动移动,请尝试在滚动事件中添加e.preventDefault()