Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/91.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
这是为什么;OnScroll“;JavaScript函数没有被调用?_Javascript_Html_Css - Fatal编程技术网

这是为什么;OnScroll“;JavaScript函数没有被调用?

这是为什么;OnScroll“;JavaScript函数没有被调用?,javascript,html,css,Javascript,Html,Css,我有一个JavaScript代码,当页面向下滚动时,导航栏应该隐藏(或边距顶部:-100px)。但是,当页面向上滚动时,导航栏应该出现(或页边距顶部:0) 我不明白为什么在滚动页面时不调用这个函数。我的代码有问题吗?请看下面: let prevScrollpos = window.pageYOffset; window.onscroll = function() { let currentScrollPos = window.pageYOffset; if (prevScrollp

我有一个JavaScript代码,当页面向下滚动时,导航栏应该隐藏(或
边距顶部:-100px
)。但是,当页面向上滚动时,导航栏应该出现(或
页边距顶部:0


我不明白为什么在滚动页面时不调用这个函数。我的代码有问题吗?请看下面:

let prevScrollpos = window.pageYOffset;

window.onscroll = function() {
  let currentScrollPos = window.pageYOffset;

  if (prevScrollpos > currentScrollPos) {
    document.getElementById("navbar").style.marginTop = "0";
  } else {
    document.getElementById("navbar").style.marginTop = "-100px";
  }

  prevScrollpos = currentScrollPos;
}
我知道函数没有被调用的主要原因是,我在函数中添加了一些简单的脚本(例如
alert(“Hello World!”)
,但这也没有发生



谢谢您,我们非常感谢您的帮助。

您的代码库中是否有多个
窗口。onscroll
声明?如果有,每次都会覆盖它们

let prevScrollpos = window.pageYOffset;

window.addEventListener('scroll', function() {
  let currentScrollPos = window.pageYOffset;

  if (prevScrollpos > currentScrollPos) {
    document.getElementById("navbar").style.marginTop = "0";
  } else {
    document.getElementById("navbar").style.marginTop = "-100px";
  }

  prevScrollpos = currentScrollPos;
});

您确定滚动发生在窗口级别吗?可能滚动是一个内部元素,比如div。您的开发工具控制台中有错误吗?(既然代码正常工作,您确定滚动是
navbar
而不是
navbar
或其他愚蠢的拼写错误吗?或者可能是在id中放入哈希符号的典型错误(
id=“#navbar”
而不是
id=“navbar”
)。但是,如果您的警报不起作用,那么听起来您的脚本似乎不正确。@IPP我不确定这为什么不起作用,因为它应该起作用,但接受的答案可以正常工作。我不知道这是否与我的浏览器或其他问题有关。不管怎样,接受的警报都起作用。很抱歉,我无法接受并更新昨天的SQL ServerStackOverflow的服务器正在更新。