微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当元素存在时,'classList'属性返回null?

如何解决当元素存在时,'classList'属性返回null?

我对JS还是很陌生,所以很抱歉如果回答了这个问题。

我已经抽出了大多数答案,但它们并没有与我完全一致。

我不明白为什么元素不能在那里被调用

我认为CSS似乎没什么用,但我不确定。

const navSlide = () => {
  const burger = document.querySelector('.burger');
  const nav = document.querySelector('nav-links');


  burger.addEventListener('click',() => {

    nav.classList.toggle('nav-active');

  });

}


navSlide();
  display: flex;
  justify-content:space-around;
  align-items: center;
  min-height: 8vh;
  background-color: var(--mainBg);
}

.nav-links li{
  list-style: none;
 }


.nav-links{
  display: flex;
  justify-content: space-evenly;
  width: 20%;
  font-size: 20px;
  
  }
 
 .nav-links a{
  letter-spacing: 2px;
  color:var(--mainText);
} 

.burger{
  display: none;
  cursor: pointer;
}


.burger div{
  width: 25px;
  height: 4px;
  background-color: var(--mainText);
  margin:3px;
  padding: 0;

}


.showacase-hero{
  background-image: linear-gradient(rgba(0,0.5),rgba(0,0.5)),url("img/D1.jpg");
  height: 600px;
  background-position:center;
  background-repeat: no-repeat;
  background-size: cover;
  position: relative;

}

.hero-container{
  text-align: center;
  position: absolute;
  top: 50%;
  left: 28%;
  color: var(--mainBanner);
  font-size: 20px;
}   

/* Media Queries*/

  @media screen and (max-width:1024px){
  .nav-links{
    width: 60%;
  }
} 

@media screen and (max-width:728px){
    body{
  overflow-x: hidden;
   }
  .nav-links{
    position: fixed;
    right: 0px;
    height: 92vh;
    top: 8vh;
    background-color:var(--mainBg);
    display: flex;
    flex-direction: column;
    align-items: center;
    width: 50%;
    transform: translateX(100%);
    transition: transform 0.5s ease-in;
  }
  .nav-links li{
    opacity: 0;
  }
  .burger{
    display: block;
    margin-left: 28em;
  }

  .nav-active{
    transform: translateX(0%);
  }

}

@keyframes navLinkFade{
  from{
    opacity: 0;
    transform: translateX(50px);

  }
  to{
    opacity: 1;
    transform: translateX(0px);
  }

}

@media screen and(max-width:566px){
}
<body>
  <nav>
        <ul class="nav-links"> 
          
          <li><a href="index.html ">Home</a></li>
              <li><a href="about.html ">About</a></li>
              <li><a href="services.html ">Services</a></li>
              <li><a href="contact">Contact</a></li>
          </ul>

          <div class="burger">
              <div class="line1"></div>
              <div class="line2"></div>
              <div class="line3"></div>
        </div>

  </nav>

  <div class="showacase-hero">
      <div class="hero-container">
      <h1>Yade's Pet</h1>
      <span class="banner"><p>Petcare Specialist/Dog Walker</p></span>
      <form action="https://www.w3docs.com/">
           <button class="btn" type="submit">Let's Take a Stroll</button>
      </form>
      </div>
  </div>
  <script type="text/javascript" src="app2.js"></script>
</body>
</html>
    

解决方法

nav-links是一个类,而不是标签,因此请在类名之前添加一个点:

document.querySelector( '.nav-links' );

PS:使用变量const navSlide = () => {代替清晰的函数声明是一种不好的做法:

function  navSlide () {
   ...
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。