※ ChatGPTを利用し、要約された質問です(原文:別関数にしたら、呼び出しません。)
JavaScript初心者の質問:関数にしたら機能しなくなった
このQ&Aのポイント
JavaScript初心者が別関数にコードを分けたところ、表示がうまくいかない状況になってしまいました。
配列の要素を表示する処理がうまく動かず、別関数にする前の状態では正常に表示されていたのですが、分けた後には表示されなくなりました。
グローバル変数やループの中での処理などを確認してみましたが、解決策が見つかりませんでした。どのように修正すれば表示が正常になるでしょうか?
JavaScript初心者です。環境は、WIN7、ブラウザは基本、Chromeです。
(いろいろ記述があって・・・・・・)
for(var h=0;h<5;h++)
{ document.getElementById("kouho"+h).innerHTML=a5[as[h]]; }
document.getElementById("dai").innerHTML=q5[qs[0]];
while(chkall<5){ odai5(); }
}
function odai5()
{ for(chkc=0;chkc<5;chkc++)
{ if(chk[chkc]==0){ odaimain(); }
}
}
function odaimain()
{ document.getElementById("dai").innerHTML=q5[qs[chkc]];・・・・・・・・
と、divでidがkouho0~kouho4の場所に配列a5[0~4]の文字列を表示した後、odai5()、odaimain()で条件をつけて、q5配列に入れている文字列を表示したいのですが、odai5()以下に飛ばずに完結しているようで、機能しません。
試しにa5[n]配列表示の直後にodaimain()のと同じ表示文(引数chkcの代わりに0を入れてある)を挿入したのがこのコードです。
これだと、q5[n]にはいっている文字列を狙い通り表示してくれるのですが、別関数にした点だけが違うと表示しなくなる原因、教えてくれるページがどうしても見つかりません。何が考えられるでしょうか?断片的で申し訳ないのですが、ヒントをもらえればと思います。q5,a5,qs,as,chk,chkall、どれもグローバル変数として初期設定し、chkcもvar宣言無しに使っているグローバル変数です。
また、どうすればodaimain()で表示できますか?jQueryを用いたアイディアでもいいです。どなたかご教示ください。
お礼
お返事が遅れて申し訳ありません。 いろいろ聞いたり調べたり迷走した結果、JavaSdriptの仕組みに根本的な誤解があった、と自分なりに納得しました。それまでの進行にエラーがあるはず、と思い込んでいましたが、最近、偶発的にodaimain()側でエラーを見つけ修正したら質問の症状も直ったため、次に呼ぶ関数にエラーがあると実行を拒絶する仕組みなのか、と察しました。ご指摘の「条件判定ではじかれた」もそれ系のことかと、ようやく筋が通った思いです。今では全部の疑問が氷解し、プログラムもそれなりに完成しました。ご迷惑をおかけしてすみません。みなさまのご懸念、感謝します。