【问题标题】:my else statement is not working properly JS我的 else 语句无法正常工作 JS
【发布时间】:2020-06-30 01:04:11
【问题描述】:

这是我的 div 的样式

   nav-pc {
    background-color: black;
    font-weight: bold;
    position: relative;
    top: 0;
    width: 100%;
}

//第一部分效果很好,所以当我滚动超过导航栏后,它就变成了固定的。 //但是当我返回页面顶部时,它不会将“固定”替换为“相对” //正如它应该的那样,并且栏保持固定。

   window.onscroll = function() {

    var navbar = document.getElementById('nav-pc');
    var nav_position = navbar.offsetTop;

    if (window.pageYOffset >= nav_position) {
    navbar.style.position = "fixed";
  } else {
    navbar.style.position = "relative";
  }
}

【问题讨论】:

    标签: javascript


    【解决方案1】:

    这是因为在它被修复后,新的navposition 将无限期地为 0。要解决这个问题,请将变量 var nav_position 放在函数之外,这样它就不会在你的应用程序的执行过程中发生变化。

    var navbar = document.getElementById('nav-pc');
    var nav_position = navbar.offsetTop; // set once, and won't ever change
    
    window.onscroll = function() {
      if (window.pageYOffset >= nav_position) {
        navbar.style.position = "fixed";
      } else {
        navbar.style.position = "relative";
      }
    }
    

    【讨论】:

    • 感谢您的宝贵时间 :),但问题仍然存在,现在根本无法正常工作。
    • @Pulse 那么可能还有更多相关代码您没有显示。你能做一个工作代码sn-p吗?仅凭您提供的内容,我的测试就成功了。
    • 我试图将其添加到 sn-p 中,但控制台显示:“消息”:“未捕获的类型错误:无法读取属性 'offsetTop' of null”,“文件名”:“stacksnippets.net/js
    • 我明白了...好吧,无论如何添加它,以便我看看。
    • 它一直说你的帖子主要是代码,我已经写了 5 行解释,但仍然这么说:///
    猜你喜欢
    • 2015-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-27
    • 2016-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多