「ある要素をクリックしたらその要素に対応する部分へスクロール」というような実装を行おうとしております。
ある要素が3つと仮定し
const $link = document.querySelectorAll('a[href^="#"]'); for(let i = 0; i < $link.length; i++) { $link[i].addEventListener('click', (e) => { e.preventDefault(); console.log(i); }); }
上記の結果ではクリック時にコンソールに「1, 2, 3」とうまく入っているのですが、
const $link = document.querySelectorAll('a[href^="#"]'); let i = 0; while(i < $link.length) { $link[i].addEventListener('click', (e) => { e.preventDefault(); console.log(i); }); i++; }
上記while文ではどれを押しても「3」しか出てきません。
上記にe.target.getAttribute
とすれば対象の要素を取得はできるので問題はないのですが、
何故for文とwhile文のクリックイベントでiの数値の取得が変わるのかがわかりませんでした。
以上、よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/11/05 12:22
2021/11/07 17:52