初心者のためご教授頂けますと嬉しいです。
前提・実現したいこと
使用言語 javascript
btnをクリックでハンバーガーメニューを開くことはできます。
同じbtnをクリックで閉じることもできます。
btn以外の要素(container要素)をクリックしてもメニューを閉じる実装がしたいです。
該当のソースコード
HTML
<!--global-container--> <div class="global-container" id="global-container"> <!--mobile-menu--> <nav class="mobile-menu" id="mobile-menu"> ~略~ </nav><!--/mobaile-menu--> <!--container--> <div class="container" id="container"> <!--humberger--> <div class="humberger"> <button class="humberger-btn" id="humberger-btn"> <span></span> <span></span> <span></span> </button> </div><!--/humberger--> <!--main--> <section class="main"> ~以下、略~ </div><!--/container--> </div><!--/global-container-->
Javascript
const gCon = document.getElementById('global-container'); const con = document.getElementById('container'); const hBtn = document.getElementById('humberger-btn'); const mMenu = document.getElementById('mobile-menu'); hBtn.addEventListener('click', () => { gCon .classList.toggle('menu-open'); con.classList.toggle('menu-open'); mMenu.classList.toggle('menu-open'); }); con.addEventListener('click', () => { if(con.classList === 'menu-open') { gCon .classList.remove('menu-open'); con.classList.remove('menu-open'); mMenu.classList.remove('menu-open'); } });
エラーはないですが実行もされないです。
試したこと
試したこと①
比較演算子 === を == にした。
→変わらず。
containerに2つのクラスがあるからできない?(container,menu-open)
試したこと②
if文を消した
→開くこともできなくなった。
試したこと③
hasClassに変更
→エラー(Uncaught TypeError: con.hasClass is not a function
at HTMLDivElement.<anonymous>)
con.addEventListener('click', () => { if(con.hasClass('menu-open')) { gCon .classList.remove('menu-open'); con.classList.remove('menu-open'); mMenu.classList.remove('menu-open'); } });
色々と調べてみたのですが、jQueryの情報が多く解決できませんでした。
javascriptのみで実装がしたいのでどなたかご教授ください。
宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/21 14:01
2020/06/21 14:02