実現したいこと
数字タッチゲームをつくっています。数字を小さい順に押せるようにしたいです。
前提
ドットインストールで紹介されている数字タッチゲームを自分なりの方法で作ってみましたが、『数字を小さい順番に押す』という部分でつまづきました。
該当のソースコード
html
1<div id ="container"> 2 <div id="timer">0.0</div> 3 <ul id="board"> 4 <li></li> 5 <li></li> 6 <li></li> 7 <li></li> 8 </ul> 9 <div id="btn">スタート</div> 10 </div>
css
1body { 2 background: #ccc; 3 color: #fff; 4 font-family: 'Courier New', sans-serif; 5 font-size: 16px; 6 font-weight: bold; 7} 8 9#container { 10 /* 50px * 2 + 10px * 2 */ 11 width: 120px; 12 margin: 16px auto; 13} 14 15#board { 16 display: flex; 17 flex-wrap: wrap; 18 list-style: none; 19 margin: 0 0 8px; 20 padding: 10px; 21 background: #fff; 22 border-radius: 4px; 23} 24 25#board li { 26 background: #00aaff; 27 width: 40px; 28 height: 40px; 29 margin: 5px; 30 cursor: pointer; 31 border-radius: 4px; 32 line-height: 40px; 33 text-align: center; 34 box-shadow: 0 4px 0 #0088cc; 35} 36 37#board li.pressed{ 38 background: #ccc; 39 box-shadow: none; 40 margin-top: 9px; 41 margin-bottom: 1px; 42} 43 44 45#timer { 46 margin-bottom: 8px; 47 font-size: 20px; 48 text-align: right; 49} 50 51#btn { 52 cursor: pointer; 53 user-select: none; 54 background: #f44336; 55 padding: 8px; 56 border-radius: 4px; 57 text-align: center; 58 box-shadow: 0 4px 0 #d1483e; 59} 60 61#btn:active { 62 margin-top: 12px; 63 box-shadow: none; 64} 65
javascript
1 const btn = document.querySelector("#btn"); 2 const lists = [...document.querySelectorAll("li")]; 3 4 // スタート押す前は数字を表示しない動作 5 lists.forEach((li) => { 6 li.classList.add("pressed"); 7 }); 8 9 10 // スタートボタンを押した時の動作(ランダムな数字をパネルに表示) 11 btn.addEventListener("click", () => { 12 const number = [0, 1, 2, 3]; 13 const liNumber = []; 14 for (let i = 0; i < 4; i++) { 15 liNumber[i] = number.splice(Math.floor(Math.random() * number.length), 1)[0]; 16 } 17 lists[0].textContent = liNumber[0]; 18 lists[1].textContent = liNumber[1]; 19 lists[2].textContent = liNumber[2]; 20 lists[3].textContent = liNumber[3]; 21 22 23 lists.forEach((li) => { 24 li.classList.remove("pressed"); 25 }); 26 27 28 // 数字を小さい順に押す動作(ここがわかりません) 29 lists.forEach((li) => { 30 li.addEventListener("click", () => { 31 li.classList.add("pressed"); 32 }); 33 }); 34 }); 35
試したこと
クリックする度に増える変数を宣言してみたり、ifの条件式を考えてみましたが、どう書けばうまく動作するのかわかりませんでした、、、
↓追記
let count = 0 ;
lists.forEach((li) => {
li.addEventListener("click", () => {
li[count].classList.add("pressed");
count++;
});
});
回答2件
あなたの回答
tips
プレビュー