前提
addEventListenerで追加したクラスのselectorを取得できない
クリックしたらアンダーラインが横に移動するインタラクションの実装をする際に、
click後にactiveクラスの要素を取得できないです。
javascript
1let currentItem = document.querySelector(".current-item"); 2let slideLine = document.querySelector("#slide-line"); 3let nav = document.querySelector("#navigation"); 4let list = document.querySelectorAll("ul li"); 5 6list.forEach((el) => { 7 el.addEventListener("click", (e) => { 8 list.forEach((item) => { 9 item.classList.remove("current-item"); 10 }); 11 12 el.classList.add("current-item"); 13 console.log(currentItem);//要素が更新されない 14 currentItemFunction(); 15 }); 16}); 17 18currentItemFunction(); 19 20function currentItemFunction() { 21 let styles = { 22 width: `${currentItem.clientWidth}`, 23 left: `${currentItem.getBoundingClientRect().left}` 24 }; 25 console.log(styles.width); 26 slideLine.style.setProperty("width", `${styles.width}px`); 27 slideLine.style.setProperty("left", `${styles.left}px`); 28} 29
html
1<nav id="navigation"> 2 <ul> 3 <li> 4 <a href="#">Home</a> 5 </li> 6 <li class="current-item"> 7 <a href="#">Services</a> 8 </li> 9 <li> 10 <a href="#">Company Profile</a> 11 </li> 12 <li> 13 <a href="#">Contact Us</a> 14 </li> 15 </ul> 16 <span id="slide-line"></span> 17</nav> 18
実現したいこと
console.log(currentItem);
部分でクリックした要素が取得したいです。
回答よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/12/08 07:27