##やりたいこと
最後にクリックされた<li>のみの色を変更したいです。現在<li>の色を変更することはできたのですが、別の<li>に選択を変更すると、前回の選択で発生した色の変化が残ったままになってしまいます。
A0(li要素)をクリックした後にA1(li要素)をクリックすると以下のようになります。
A0(li要素)をクリックした後にA1(li要素)をクリックするとA1のみが色をかえるようにするにはどうすれば良いでしょうか。
回答よろしくお願いいたします。
###HTMLコード
<section class="container"> <p id="position"></p> <ul id="choices"></ul> <div id="btn" class="disabled">Next</div> </section>
###CSSコード
.container { width: 400px; margin: 8px auto; background: #fff; border-radius: 4px; text-align: center; } #choices { list-style: none; padding: 0; margin-bottom: 16px; } #choices > li { border: 1px solid #ccc; border-radius: 4px; padding: 10px; margin-bottom: 10px; cursor: pointer; } #choices > li:hover { background: #f8f8f8; } #choices > li.select { background: #d4edda; border-color: #c3e6cb; color: #155724; font-weight: bold; }
###Jsコード
'use strict'; console.log('Hello World!') window.onload = function(){ const position = document.getElementById('position'); const choices = document.getElementById('choices'); const btn = document.getElementById('btn'); const quizSet = [ {q: '出発地', c: ['A0', 'A1', 'A2']}, {q: '目的地', c: ['B0', 'B1', 'B2']}, ]; let currentNum = 0; let departureNum = 0; let directionNum = 0; function checkAnswer(li) { if (li.textContent === quizSet[0].c[0]) { departureNum = 1; console.log(departureNum); li.classList.add('select'); } else if (li.textContent === quizSet[0].c[1]) { departureNum = 2; console.log(departureNum); li.classList.add('select'); } else if (li.textContent === quizSet[0].c[2]) { departureNum = 3; console.log(departureNum); } else if (li.textContent === quizSet[1].c[0]) { directionNum = 1; console.log(directionNum); } else if (li.textContent === quizSet[1].c[1]) { directionNum = 2; console.log(directionNum); } else if (li.textContent === quizSet[1].c[2]) { directionNum = 3; console.log(directionNum); } btn.classList.remove('disabled'); } function setQuiz() { position.textContent = quizSet[currentNum].q; while (choices.firstChild) { choices.removeChild(choices.firstChild); } quizSet[currentNum].c.forEach(choice => { const li = document.createElement('li'); li.textContent = choice; li.addEventListener('click', () => { checkAnswer(li); }); choices.appendChild(li); }); } setQuiz(); btn.addEventListener('click', () => { if (btn.classList.contains('disabled')) { return; } btn.classList.add('disabled'); currentNum++; setQuiz(); }); }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/15 11:12