問題
このソースコードで選択肢をクリックしたら、たまに↓のようなエラーが出て、進めなくなってしまいます。
Cannot read properties of undefined (reading '5')
解決策を教えてきただけますでしょうか。
ソースコード
HTML
1<!DOCTYPE HTML> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title></title> 6 </head> 7 <body> 8 <h1>クイズ</h1> 9 <hr> 10 <p hidden><span id="001" ></span></p> 11 12 <h2>問題</h2> 13 <div id="text_q"></div> 14 <h2>選択</h2> 15 <div id="text_s"></div> 16 <h2>解答</h2> 17 <div id="text_a"></div> 18 19 <script type="text/javascript"> 20 //問題と解答 21 qa = new Array(); 22 qa[0] = ["地震","earthquake","earthshake","earthkick","earthbreak",1]; 23 ・ 24 ・ 25 qa[84] = ["修復できないほど","irreparably","incogorous","industrious","impedence",1]; 26 27 function run(){ //randomの生成 28 for (var i = qa.length-1; i>=0; i--){ 29 var rand = Math.floor(Math.random() * (i+1)); 30 var temp = qa[i]; 31 qa[i] = qa[rand] 32 qa[rand] = temp; 33 document.getElementById("001").innerHTML = i + "回目= " + qa; 34 quiz(qa); 35 } 36 } 37 38 //初期設定 39 q_sel = 4; //選択肢の数 40 q_count = 10; //出題回数 41 setReady(qa); 42 43function setReady() {//初期設定 44 count = 0; //問題番号 45 ansers = new Array(); //解答記録 46 run(); //再テストの場合のランダムの生成 47 quiz(); //最初の問題 48 } 49function quiz() { //問題表示 50 var s, n; 51 //問題 52 document.getElementById("text_q").innerHTML = (count + 1) + "問目:" + qa[count][0]; 53 //選択肢 54 s = ""; 55 for (n=1;n<=q_sel;n++) { 56 s += "【<a href='javascript:anser(" + n + ")'>" + n + ":" + qa[count][n] + "</a>】"; 57 } 58 document.getElementById("text_s").innerHTML = s; 59 } 60function anser(num) { //解答表示 61 var s; 62 s = (count + 1) + "問目:"; 63 //答え合わせ 64 if (num == qa[count][q_sel + 1]) { 65 //正解 66 ansers[count] = "○ "; 67 } else { 68 ansers[count] = "× "; 69 } 70 s += ansers[count] + qa[count][num]; 71 document.getElementById("text_a").innerHTML = s; 72 //次の問題を表示 73 count++; 74 if (count < q_count) { 75 quiz(); 76 } else { 77 //終了 78 console.log("finish!") 79 } 80 } 81 </script> 82 </body> 83 </html>
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー