前提・実現したいこと
お世話になります。
10個のdivが並んでいて、クリックするとランダムに2個winを表示したいです。
それ以外は、loseを表示したいです。
また、2個は重複しないようにしたいです。
現状、1個は取得できているのですが、複数の表現に困っています。
アドバイスいただけると幸いです。よろしくお願いいたします。
該当のソースコード
javascript
1 <script> 2 'use strict';//エラーチェック 3 const num = 10; 4 const winner = Math.floor(Math.random() * num); // 0 - 9 5 6 for (let i = 0; i < num; i++) { 7 const div = document.createElement('div'); 8document.createElement() 9 div.classList.add('box'); 10 div.addEventListener('click', () => { 11 if (i === winner) {//iと比較して当たり判定 12 div.textContent = 'Win!'; 13 div.classList.add('win'); 14 } else { 15 div.textContent = 'Lose!'; 16 div.classList.add('lose'); 17 } 18 }); 19 20 document.body.appendChild(div);//divをbodyの子要素として追加 21 } 22 </script>
試したこと
このようにしてみると、2つwinが出ましたが
ランダム状態になっていますでしょうか。。。
```javascript <style> body { display: flex; flex-wrap: wrap;/*折り返し*/ } .box { width: 100px; height: 100px; background: skyblue; cursor: pointer; transition: 0.8s; margin: 0 8px 8px 0; text-align: center; line-height: 100px; } .win { background: pink; border-radius: 50%; transform: rotate(360deg); } .lose { transform: scale(0.9); } </style> </head> <body> <script> 'use strict';//エラーチェック const num = 10; const winner = Math.floor(Math.random() * num); // 0 - 9 const winner2 = Math.floor(Math.random() * num); // 0 - 9 //Math.random() * num 0以上1未満のランダムな数値をかける //Math.floor 小数点以下を切り捨て for (let i = 0; i < num; i++) { //i カウンター 1ずつ増えて 10になったら抜ける 0から const div = document.createElement('div');//定数div 要素を作るには document.createElement() div.classList.add('box'); div.addEventListener('click', () => { if (i === winner) {//iと比較して当たり判定 div.textContent = 'Win!'; div.classList.add('win'); } else if (i === winner2){ div.textContent = 'Win2!'; div.classList.add('win'); } else { div.textContent = 'Lose!'; div.classList.add('lose'); } }); document.body.appendChild(div);//divをbodyの子要素として追加 } </script> </body>
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/07 13:22
2019/10/07 13:38
2019/10/07 14:59