0
我有這樣的jQuery代碼被觸發移動導航,這是兩個div(左和標識的右側,但標誌是隱藏的):循環通過getElementsByClassName方法
$(document).ready(function() {
$('.menu').on('click', function(e){
$('.main-nav').toggleClass('active');
e.preventDefault();
});
});
我嘗試重寫這vannila JS通過這樣的:
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代碼:
<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>
還有其他各種問題,隨時從我現在刪除的答案複製任何相關的東西。 –
'var x = document.getElementsByClassName('menu')[0];'有意返回第一個元素。稍後,該按鈕將具有更多獨特的類名,這在我的代碼中再也不會出現。我認爲這是比循環更快的請求? – Lanti
@TJ OP可以從我們的2個答案中獲益。我認爲我在這裏解釋的是OP的主要問題。好的,我會解釋你在這裏回答你說的話。 –