【週刊ドットインストール】 考える力を養うための新クラス『データで学ぶアルゴリズム』を256timesでリリース!
お世話になっております。
試しに、dt とdd を囲うdiv を付けずに実行してみたところ、開閉がうまくいきませんでした。
dt
dd
div
該当部分のHTMLは
<dl> <dt>質問です</dt> <dd>回答です。回答です。回答です。回答です。回答です。回答です。回答です。回答です。回答です。回答です。回答です。回答です。回答です。</dd> <dt>質問です</dt> <dd>回答です。回答です。回答です。回答です。回答です。回答です。回答です。回答です。回答です。回答です。回答です。回答です。回答です。</dd> <dt>質問です</dt> <dd>回答です。回答です。回答です。回答です。回答です。回答です。回答です。回答です。回答です。回答です。回答です。回答です。回答です。</dd> </dl>
該当部分のCSSは
dd { display: none; } dd.appear { display: block; }
JavaScriptは下記です。
const dts = document.querySelectorAll('dt'); const dds = document.querySelectorAll('dd'); dts.forEach((dt, index) => { dt.addEventListener('click', () => { dds.forEach(dd => { dd.classList.remove('appear'); }) dds[index].classList.add('appear'); }) })
です。
JavaScriptの流れから考えると、
const dts = document.querySelectorAll('dt'); const dds = document.querySelectorAll('dd'); dts.forEach((dt, index) => { dt.addEventListener('click', () => { // (1) dtをクリックしたら dds.forEach(dd => { // (2) 全てのddのappearを削除して dd.classList.remove('appear'); }) dds[index].classList.toggle('appear'); // (3) 該当のddにappearを付ける }) })
だと思うのですが、なぜ、(2)が適用されないのか、別のdtをクリックした時、ddにappearがついたままになってしまう流れが分かりません。
appear
お手数ですが、宜しくお願い致します。
ドットインストールは、3分動画でマスターできるプログラミング学習サービスです。
3分で気軽に学習でき、スマートフォンからも視聴可能です。ホームページやWebサービスの制作を通して、実践的にプログラミングを学べます。
他にも、ゲーム制作やデータ分析・機械学習・AIに使われる言語まで幅広くカバー。学びたい分野のレッスンがきっと見つかります。
この回答を見るにはプレミアムプランへの登録が必要です
お世話になっております。
試しに、
dtとddを囲うdivを付けずに実行してみたところ、開閉がうまくいきませんでした。該当部分のHTMLは
該当部分のCSSは
JavaScriptは下記です。
です。
JavaScriptの流れから考えると、
だと思うのですが、なぜ、(2)が適用されないのか、別の
dtをクリックした時、ddにappearがついたままになってしまう流れが分かりません。お手数ですが、宜しくお願い致します。