使用addeventlistener-Javascript创建滚动事件

使用addeventlistener-Javascript创建滚动事件,javascript,html,scroll,addeventlistener,Javascript,Html,Scroll,Addeventlistener,我试图在vanilla JS中实现一些东西,但这不是玩球。我有一个元素,我想在特定的滚动长度后改变颜色,但当我使用addEventListener(“滚动”,函数)等时,它不起作用,但我的控制台中没有任何错误。 任何帮助都会很棒 艾米丽 代码如下,我这里有一支笔: HTML JAVASCRIPT var box = document.getElementsByClassName('box')[0]; window.addEventListener('scroll', function() {

我试图在vanilla JS中实现一些东西,但这不是玩球。我有一个元素,我想在特定的滚动长度后改变颜色,但当我使用addEventListener(“滚动”,函数)等时,它不起作用,但我的控制台中没有任何错误。
任何帮助都会很棒

艾米丽

代码如下,我这里有一支笔:

HTML

JAVASCRIPT

var box = document.getElementsByClassName('box')[0];

window.addEventListener('scroll', function() {

  if (box.scrollTop > 0) {
    box.style.background = "blue";
  }

});

您必须在文档
正文
元素上获取
滚动条
,而不是在您的框上。在您的情况下,
box.scrollTop
将始终为
0

替换此项:

  if (box.scrollTop > 0) {
    box.style.background = "blue";
  }
为此:

  if (document.body.scrollTop > 0) {
    box.style.background = "blue";
  }
另外请注意,现在最好使用window.pageYOffset作为
document.body.scrollTop
在严格模式下不推荐使用。了解有关在整个窗口上滚动检测的更多信息


演示:

您必须在文档
正文
元素上获得
滚动条
,而不是在您的方框上。在您的情况下,
box.scrollTop
将始终为
0

替换此项:

  if (box.scrollTop > 0) {
    box.style.background = "blue";
  }
为此:

  if (document.body.scrollTop > 0) {
    box.style.background = "blue";
  }
另外请注意,现在最好使用window.pageYOffset作为
document.body.scrollTop
在严格模式下不推荐使用。了解有关在整个窗口上滚动检测的更多信息


演示:

这是因为
box.scrollTop
总是返回
0
。添加
console.log(box.scrollTop)位于
if()
语句上方,您将在控制台中看到
box.scrollTop
的结果。这是因为
box.scrollTop
始终返回
0
。添加
console.log(box.scrollTop)
if()
语句上方,您将在控制台中看到
框的结果。