JavaScriptで英語の問題を作成しているのですが
「次へ」と「前へ」のボタンを作成して、問題が切り替わるようにしており
最終問題に到達すると「次へ」のボタンが押せなくなるようになっているのですが
その状態で前へと押すと次へのボタンが押せない状態が続いてしまいます。
そのため最終問題の時だけ「次へ」が押せなくし、最終問題に到達した後も
「前へ」のボタンを押した状態の時にボタンが再使用できるようにしたいです。
また、1問目の時は前へのボタンが押せなくなるか非表示にしたいです。
どなたかお願いします。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>並び替え問題</title> <script> window.addEventListener('DOMContentLoaded', ()=>{ const shuffle=x=>x.map(y=>[y,Math.random()]).sort((y,z)=>y[1]-z[1]).map(y=>y[0]); let q = [ "i sometimes watch movies on Sunday", "this book is too difficult for me", "yumi can't stay at her aunt's house",]; q=shuffle(q); document.querySelectorAll('.view').forEach((view,idx)=>{ shuffle(q[idx].split(' ')) .forEach(x=>view.append(Object.assign(document.createElement('div'),{textContent:x}))); view.addEventListener('dragover',e=>e.preventDefault()); var t=null; view.querySelectorAll('div').forEach(x=>{ x.setAttribute("draggable","true"); x.addEventListener('drop',e=>{ view.insertBefore(t,x.nextElementSibling); }); x.addEventListener('dragstart',e=>{ t=e.target; }); }); }); document.querySelector('.btn-score').addEventListener('click',()=>{ let score = 0; const totalScore = document.getElementById('score-message'); document.querySelectorAll('.view').forEach((view,idx)=>{ const a=[...view.querySelectorAll('div')].map(x=>x.textContent).join(' '); if(q[idx]==a) score++; }); totalScore.textContent = score + "点"; }); }); window.addEventListener('DOMContentLoaded', ()=>{ const next=document.querySelector('#next'); const q=[...document.querySelectorAll('.q')]; next.addEventListener('click',()=>{ const active=document.querySelector('.q:not([hidden])'); const idx=q.indexOf(active); active.setAttribute('hidden',''); q[idx+1].removeAttribute('hidden'); if(idx==q.length-2){ next.disabled=true; } }); }); window.addEventListener('DOMContentLoaded', ()=>{ const prev=document.querySelector('#prev'); const q=[...document.querySelectorAll('.q')]; prev.addEventListener('click',()=>{ const active=document.querySelector('.q:not([hidden])'); const idx=q.indexOf(active); active.setAttribute('hidden',''); q[idx-1].removeAttribute('hidden'); if(idx==q.length-2){ prev.disabled=true; } }); }); </script> <style type="text/css"> body { font-family: serif; text-align: center; } .quizzes-container { width: 400px; margin: 50px auto; } .quiz-container { border-bottom:1px solid black; padding-bottom: 20px; } #score-container { border: 1px solid black; height: 50px; width: 20%; position: relative; left: 40%; } .btn-score { display: block; margin: 20px auto; font-family: serif; background-color: white; } .view{ display:flex; position: relative; left:35%; } .view div{border:solid 2px;padding:8px 16px 8px 16px ;} .view div:not(:first-child){border-left:solid 0px;} </style> <H2>並び替え問題</H2> <div class="quiz-container"></div> <div class="q"> <h2>第1問</h2> <div class="view"></div><br> <div class="quiz-container"></div></div> <div class="q" hidden> <h2>第2問</h2> <div class="view"></div><br> <div class="quiz-container"></div></div> <div class="q" hidden> <h2>第3問</h2> <div class="view"></div><br> <div class="quiz-container"></div></div><br> <input type="button" value="前へ" id="prev"> <input type="button" value="次へ" id="next"><br><br> <div id="score-container"> <p id="score-message"></p> </div><button class="btn-score" type="button">合計得点を見る</button></div>
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。