我有上面的脚本,该脚本在浏览器控制台上输出正确的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。
答案 0 :(得分:0)
这里的问题是,在某些浏览器和操作系统中,滚动到某个元素不会激活该元素的悬停状态。另外,如果有人拖动滚动条,它将永远不会激活您的悬停。
这里的悬停对象告诉滚动事件要去哪里,但是它们需要悬停操作才能有效。您最好找到具有offsetTop值的正确元素,而不是在滚动过程中要求第二个事件。
[edit]否则滚动事件的滚动将覆盖scrollIntoView方法的潜力。由于似乎您只想进行滚动移动,请尝试在滚动事件中添加e.preventDefault()
。