2017-08-09 7 views
0

hamburger menu divのクラスを変更するこのJSコードを書きました。ほとんどのブラウザで動作しますが、古いものではありません(クラスやコンソールにエラーは出ません)。JSがハンバーガーアニメーションを作成するときの問題

JSコード:

var hamburger = document.querySelector("#hamburger"); // hamburger menu 
var mtMenu = document.querySelector(".m-t-menu"); 

hamburger.addEventListener("click", function() { 
    if (hamburger.classList == "close") { 
     hamburger.classList = "open"; 
     mtMenu.style.display = "block"; 
    } else if(hamburger.classList == "open") { 
     hamburger.classList = "close"; 
     mtMenu.style.display = "none"; 
    } 
}); 

は、何か問題があるのか​​、jQueryのせずにそれを書くためのより良い方法はありますか?

+0

classListはリストであり、文字列ではありません。 adddとremoveオプションを使用してください:https://developer.mozilla.org/en-US/docs/Web/API/Element/classList – Randy

+0

ありがとう私は.classNameでそれを変更して動作します –

答えて

0

代わりに、メソッドcontainsを使用してください。このメソッドはブール値(trueまたはfalse)を返します。

hamburger.addEventListener('click', function(){ 
    if (hamburger.classList.contains('close'){ 
    hamburger.className = 'open' 
    mtMenu.style.display = 'block' 
    } else if (hamburger.classList.contains('open')){ 
    hamburger.className = 'close' 
    mtMenu.style.display = 'none' 
    } 
}) 

ただし、古いブラウザではcontainsメソッドが使用できない可能性があります。私は完全にはわからない。

+0

代わりに.classNameを使用して修正しました.classListとそれが動作します –

+0

@brenno_pellegrini私はあなたが使っていた、または使用している比較とは対照的に 'contains'メソッドを使います。この回答が役に立つと判明した場合は、それを投票してもそれを傷つけることはありません<3 – Anthony

関連する問題