【週刊ドットインストール】 考える力を養うための新クラス『データで学ぶアルゴリズム』を256timesでリリース!
いつも楽しく学ばせていただいております。
今回の動画の復習をしていて、下記のように 記載したところ、サムネイルの大きな番号をクリックしたあとに小さな番号をクリックするとエラーが発生し、クリックしたサムネイルにcurrentクラスが付与されず、正しく動きません。 (※小さな番号から大きな番号をクリックする分には問題なく動作します。)
動画では、const thumbnails = document.querySelectorAll('.thumbnails>li');を li.addEventListener('click', () => {}`の中に入れていてエラーが発生していませんが、私が書いたように外で記載すると下記のエラーが発生してしまいます。
const thumbnails = document.querySelectorAll('.thumbnails>li');
Uncaught TypeError: Cannot read property 'classList' of undefined at HTMLLIElement.<anonymous>
const thumbnails = document.querySelectorAll('.thumbnails>li');は.thumbnailsli直下のli要素をすべて取得するコードなのは理解していますが、記載位置によって正しく動かなくなる理由がよくわかりません。私が記載した位置でも問題なく動く気がするのですが、なぜ動かないのでしょうか。 また、なぜ動画の位置で記載しないといけないのかご教示いただけますと幸いです。 よろしくお願いいたします。
images.forEach((image,index) => { const img = document.createElement('img'); img.src = images[index]; const li = document.createElement('li'); li.appendChild(img); document.querySelector('.thumbnails').appendChild(li); if (currentIndex === index) { li.classList.add('current'); } const thumbnails = document.querySelectorAll('.thumbnails>li');//この位置だとエラーが発生する li.addEventListener('click', () => { mainImage.src = image; // const thumbnails = document.querySelectorAll('.thumbnails>li'); エラーが発生しない thumbnails[currentIndex].classList.remove('current'); currentIndex = index; thumbnails[currentIndex].classList.add('current'); })
ドットインストールは、3分動画でマスターできるプログラミング学習サービスです。
3分で気軽に学習でき、スマートフォンからも視聴可能です。ホームページやWebサービスの制作を通して、実践的にプログラミングを学べます。
他にも、ゲーム制作やデータ分析・機械学習・AIに使われる言語まで幅広くカバー。学びたい分野のレッスンがきっと見つかります。
この回答を見るにはプレミアムプランへの登録が必要です
いつも楽しく学ばせていただいております。
今回の動画の復習をしていて、下記のように 記載したところ、サムネイルの大きな番号をクリックしたあとに小さな番号をクリックするとエラーが発生し、クリックしたサムネイルにcurrentクラスが付与されず、正しく動きません。
(※小さな番号から大きな番号をクリックする分には問題なく動作します。)
動画では、
const thumbnails = document.querySelectorAll('.thumbnails>li');を li.addEventListener('click', () => {}`の中に入れていてエラーが発生していませんが、私が書いたように外で記載すると下記のエラーが発生してしまいます。const thumbnails = document.querySelectorAll('.thumbnails>li');は.thumbnailsli直下のli要素をすべて取得するコードなのは理解していますが、記載位置によって正しく動かなくなる理由がよくわかりません。私が記載した位置でも問題なく動く気がするのですが、なぜ動かないのでしょうか。また、なぜ動画の位置で記載しないといけないのかご教示いただけますと幸いです。
よろしくお願いいたします。