首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环通过getElementsByClassName

循环通过getElementsByClassName
EN

Stack Overflow用户
提问于 2016-04-03 13:31:17
回答 1查看 999关注 0票数 0

我有这个Jquery代码,用于切换移动导航,它位于两个div中(徽标的左边和右侧,但徽标是隐藏的):

代码语言:javascript
复制
$(document).ready(function() {
  $('.menu').on('click', function(e){
    $('.main-nav').toggleClass('active');
    e.preventDefault();
  });
});

我试着把这个改写成vannila js:

代码语言:javascript
复制
document.addEventListener('DOMContentLoaded', function() {
  var toggleNav = document.getElementsByClassName('main-nav');

  function myFunction() {
    for (var i=0; i<toggleNav.length; i++) {
      toggleNav[i].classList.toggle('active');
      console.log('myFunction() fired...');
      return false;
    }
  };

  var x = document.getElementsByClassName('menu')[0];
  x.addEventListener('click', myFunction);
});

但是这仅仅是切换循环中的第一个导航,也就是left-nav,就像我过去使用var toggleNav = document.getElementsByClassName('main-nav')[0];一样。哪里出了问题?

HTML代码:

代码语言:javascript
复制
<div class="toggle-mobile-nav">
  <a href="#" class="menu">Menu <span>≡</span></a>
</div>

<div class="navigation">

  <nav class="main-nav left-nav">
    ...
  </nav>

  <div class="logo logo-nav">
    <a href="/"><img class="logo-svg" src="..." alt="" /></a>
  </div>

  <nav class="main-nav right-nav">
    ...
  </nav>

</div>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-03 13:33:54

你在for循环中返回for,这就像一个break

代码语言:javascript
复制
function myFunction() {
    for (var i=0; i<toggleNav.length; i++) {
      toggleNav[i].classList.toggle('active');
      console.log('myFunction() fired...');
    }
  return false;
};

你必须在你的函数中返回false。循环的执行也是如此。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36386001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档