Javascript 鼠标滚轮上的JS scrollIntoView函数是';行不通

Javascript 鼠标滚轮上的JS scrollIntoView函数是';行不通,javascript,html,Javascript,Html,我有上面的脚本,它在浏览器控制台上输出正确的id,但不滚动: 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';

我有上面的脚本,它在浏览器控制台上输出正确的id,但不滚动:

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();
    }
});
var divID=null;
var up=null;
var-down=null;
职能部门(x){
开关(x.id){
个案‘s1’:
up=null;
向下='s2';
打破
案例“s2”:
向上='s1';
向下='s3'
打破
个案‘s3’:
向上='s2';
向下class='s4';
打破
案例“s4”:
向上='s3';
down=null;
打破
违约:
up=null;
down=null;
打破
}
}
addEventListener('wheel',函数(e){
如果(e.deltaY<0及以上){
控制台日志(up);
document.getElementById(up.scrollIntoView();
}
如果(e.deltaY>0&&down){
控制台。日志(向下);
getElementById(向下).scrollIntoView();
}
});
我使用这个结构:

<div id='s1' onmouseover="div(this)">
    <!--content-->
</div>
<div id='s2' onmouseover="div(this)">
    <!--content-->
</div>
<div id='s3' onmouseover="div(this)">
    <!--content-->
</div>
<div id='s4' onmouseover="div(this)">
    <!--content-->
</div>

正如我所说,console.log打印它应该打印的内容,但是滚动什么也不做,只是常规滚动。
如果有必要,我会使用wordpress。

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

这里的悬停告诉你的滚动事件去哪里,但是它们需要悬停动作才能有效。您最好使用偏移值找到正确的元素,而不是在滚动期间需要第二个事件


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

您使用的是
wheel
事件,该事件仅在使用物理滚轮(或轨迹板滚动)时才会触发。让我们假设他/她正在使用鼠标进行测试,因为这是意料之中的。没有办法重新创建它,因为它实际上是有效的。检查为什么它不能按预期的方式运行的其他原因,这段特定的代码可以工作。@ShengSlogar正如我所说的,wheel事件中的console.log()行工作正常,并在浏览器控制台上显示正确的ID。所以它正在触发,不是吗?试着在scroll事件中添加一个e.preventDefault()。@bronkula谢谢,它成功了!!!:De.preventDefault()启动鼠标滚轮/滚轮处理程序可以节省我的时间!谢谢