質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

12226閲覧

<JS>Cannot read properties of undefined (reading '5')と出てしまう。

nekozilla

総合スコア2

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2021/10/17 07:26

編集2021/10/17 07:54

問題

このソースコードで選択肢をクリックしたら、たまに↓のようなエラーが出て、進めなくなってしまいます。

     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]; 232425 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>

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2021/10/17 09:53

中略されるより後略にされたほうが再現確認しやすいのですが。 どこかで配列6番目が定義されてないんじゃないでしょうか。
guest

回答2

0

提示されているコードにはこのエラーにつながるような問題は見つけられませんでした。

js

1qa = new Array(); 2qa[0] = ["地震","earthquake","earthshake","earthkick","earthbreak",1]; 345qa[84] = ["修復できないど","irreparably","incogorous","industrious","impedence",1];

ここの代入で qa[1] から qa[83]の間で抜けがあるのではないでしょうか。

投稿2021/10/17 10:26

int32_t

総合スコア20670

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nekozilla

2021/10/17 10:30

探してみたら確かにそのようなものがありました。あとで書いた友達を呼び出しておきます。
guest

0

ベストアンサー

Cannot read properties of undefined (reading '5')

エラーになっている箇所としては、下記ではないかと思います。

JavaScript

1//答え合わせ 2if (num == qa[count][q_sel + 1]) {

おそらくは count の値が、要素数を超過しているか、その問題が存在しないか、ではないかと思います。

javascript

1qa[存在しない配列の要素][5]

何のブラウザを使用されているか分かりませんが、
Chrome でしたら F12 キーで Developer Tool が表示されるかと思いますので、そちらでエラー箇所を確認すると良いかと思います。
イメージ説明
イメージ説明

変数の中身は「ウォッチ」等で確認下さい。
イメージ説明

投稿2021/10/17 10:13

編集2021/10/17 10:22
cx20

総合スコア4632

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nekozilla

2021/10/17 10:21

情報不足ですいません! わかりやすく説明してくださり、ありがとうございます!
cx20

2021/10/17 10:23

蛇足ですが、ウォッチ式の追記しました。 ステップ実行して、変数の値に何が入っているかを確認していけば、どこで問題が起きているか分かるかと思います。
nekozilla

2021/10/17 10:27

ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問