clientY未定义滚动方式



Hello J想要在点击p标签时滚动。但我读到并不是每个浏览器都支持末尾带有"smooth"的版本。所以我试着用一个暂停和for循环来完成它。我还将其与鼠标位置进行了比较。当我在console.log中执行此操作时,它是有效的。但当我使用return时,不会。

let angebot = document.getElementById("bieten");
let beispiel = document.getElementById("beispiel");
document.body.addEventListener("mousemove", move);
angebot.addEventListener("click", angebotscroll);
function move(event) {
let position = event.clientY;
return position;
}
document.body.addEventListener("mousemove", move);
angebot.addEventListener("click", angebotscroll);
setTimeout(function() {
for (let i = 0; move() < beispiel.offsetTop; i++) {
window.scrollBy(0, i);
}
}, 10);

未捕获的TypeError:无法读取未定义的属性"clientY"移动时(navigation.js:35(在navigation.js:44

您在setTimeout中调用函数move,而不传递event参数。当然,它是未定义的。

您应该将变量position设置在全局作用域中。在函数move中更新它(仅从侦听器调用(,在setTimeout中获取变量position,而不是调用函数move

最新更新