前提・実現したいこと
javascriptの命令で、あるidがついているdivを押した際に同じ名前のクラス属性のうちの一つのテキストを変えたいと考えています。
しかし、様々な方法を試しましたが、どのようにしたらいいのかが全くわからないです。
発生している問題・エラーメッセージ
main.js:22 Uncaught TypeError: Cannot read property 'children' of undefined at HTMLDivElement.
該当のソースコード
javascript
1'use strict' 2 3{ 4 var win = document.getElementById("win"); 5 var lose = document.getElementById("lose"); 6 var percent = document.getElementsByClassName("percent"); 7 var select = document.getElementsByClassName("select"); 8 var reset = document.getElementById("reset"); 9 var score = document.getElementsByClassName("score"); 10 var win_per = document.getElementsByClassName("win_per"); 11 12 13 var counter1 = 0; 14 var counter2 = 0; 15 var winPer = 0; 16 17 function winnerbtn(){ 18 var i; 19 for (i = 0 ; i < select.length ; i++){ 20 select[i].children[0].addEventListener("click", ()=> { 21 counter1 ++; 22 score[i].children[0].textContent = counter1; 23 winPer = counter1 / (counter1 + counter2) * 100; 24 win_per[i].children[1].textContent = `${win_per.toFixed(2)}%`; 25 }) 26 } 27 } 28 29 winnerbtn(); 30 31 lose.addEventListener("click", () => { 32 counter2 += 1; 33 loser.textContent = counter2 34 win_per = counter1 / (counter1 + counter2) * 100; 35 percent.textContent = `${win_per.toFixed(2)}%`; 36 }) 37 38 reset.addEventListener("click", () => { 39 counter1 = 0; 40 counter2 = 0; 41 winner.textContent = 0; 42 loser.textContent = 0; 43 percent.textContent = "0%"; 44 }) 45} 46
html
1<!DOCTYPE html> 2<html lang="en" dir="ltr"> 3 <head> 4 <meta charset="utf-8"> 5 <title>戦歴管理</title> 6 <link rel = "stylesheet" href = "css/styles.css"> 7 </head> 8 <body> 9 <div class = "container"> 10 <h1><img src= "img/main_logo.png" width = 500></h1> 11 <h1>戦歴管理表</h1> 12 <div class = "dekki"> 13 <p>デッキ名:占いミネア</p> 14 <a href = "" class = "btn">デッキをみる</a> 15 </div> 16 <div class = "characters"> 17 <div class = "character"> 18 <div class = "icon"> 19 <div class = "photo"><img src = "img/sword.png"></div> 20 <p>テリー</p> 21 </div> 22 <div class = "point"> 23 <div class = "score"> 24 <div class = "box1 winner" data-fig1 = "0">0</div> 25 <div class = "box1">勝</div> 26 <div class = "box1 loser"data-fig2 = "0">0</div> 27 <div class = "box1">敗</div> 28 </div> 29 <div class = "win_per"> 30 <div class = "box2">勝率</div> 31 <div class = "box2 percent">0%</div> 32 </div> 33 <div class = "select"> 34 <div class = "S-btn" id = "win">勝ち</div> 35 <div class = "S-btn" id = "lose">負け</div> 36 <div class = "S-btn" id = "reset">リセット</div> 37 </div> 38 </div> 39 </div> 40 <div class = "character"> 41 <div class = "icon"> 42 <div class = "photo"><img src = "img/wizard.png"></div> 43 <p>ゼシカ</p> 44 </div> 45 <div class = "point"> 46 <div class = "score"> 47 <div class = "box1 winner" data-fig1 = "1">0</div> 48 <div class = "box1">勝</div> 49 <div class = "box1 loser" data-fig2 = "1">0</div> 50 <div class = "box1">敗</div> 51 </div> 52 <div class = "win_per"> 53 <div class = "box2">勝率</div> 54 <div class = "box2 percent">0%</div> 55 </div> 56 <div class = "select"> 57 <div class = "S-btn" id = "win">勝ち</div> 58 <div class = "S-btn" id = "lose">負け</div> 59 <div class = "S-btn" id = "reset">リセット</div> 60 </div> 61 </div> 62 </div> 63 </div> 64 65 <script src="js/main.js"></script> 66 </body> 67</html> 68
試したこと
data属性を足してみた・・・今回の形ではいらないのではないかと感じた
ドットインストールのスロットマシンが一番近いと思い、動画を視聴
・・・あまりわからなかった。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。