• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:埋め込み式では成功できたのに外部読み込み式ではなぜ)

外部読み込み式プログラムの失敗

このQ&Aのポイント
  • 外部読み込み式プログラムが正しく動作せず、埋め込み式では成功した状況を検討する。
  • 埋め込み式の成功要因を外部読み込み式にも応用できるかが課題。
  • コードの構造や呼び出し方の違いが原因の可能性を考察する。

質問者が選んだベストアンサー

  • ベストアンサー
  • retorofan
  • ベストアンサー率34% (440/1290)
回答No.3

ページの読み込みが完了していないのに、 スクリプトを実行しようとしたために、 うまく動作しなかったのです。 これは、 コードの一部分を修正するだけで問題解決します。 [修正前] (function () { // 実行したいコード })(); [修正後] window.onload = function() { // 実行したいコード };

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • luka3
  • ベストアンサー率73% (460/630)
回答No.2

それと、こんなやり方もありますよ、という例です。 混乱させたらごめんなさい。 多次元配列を用意して、インデックス(i21やi22)を使って目的のデータを取得します。 出発駅に「中百舌鳥」を選ぶと ["","3.7km","7.8㎞"] の配列が選ばれます。 次に到着駅で選んだものに応じて、strにデータがセットされます。 (function () { const form = document.semboku_f; //フォーム要素 form.onchange = function () { //インデックスを取得 const i21 = form.semboku_q1.selectedIndex; const i22 = form.semboku_q2.selectedIndex; //禁止条件 if (i21 == 0 || i22 == 0) { return false; } //テキストを取得 const text21 = form.semboku_q1.options[i21].text; const text22 = form.semboku_q2.options[i22].text; let str = text21 + " から " + text22 + " まで"; form.result11.value = str; //距離を取得 let distance = [ ["","3.7km","7.8㎞"], ["3.7km","","??km"], ["7.8㎞","??km",""] ]; if (i21 == i22) { str = "異なる記号を選んでください"; } else { str = distance[i21-1][i22-1]; } form.result21.value = str; //結果を表示 }; })();

すると、全ての回答が全文表示されます。
  • luka3
  • ベストアンサー率73% (460/630)
回答No.1

スクリプトの読み込みを一番最後にしてください。 HTMLでフォームが置かれる前にスクリプトを呼び出したので、onchangeイベントが割り当てられません。 「document.semboku_f」が未定義という状態で、もちろんフォーム配下のパーツも無効の状態になります。 HTMLで配置されないうちは semboku_f が使えないということです。 jsのファイル名は変えましたが自分のローカル環境で動作してますので、あとはファイル名やパス名が間違ってないか確認してください。

すると、全ての回答が全文表示されます。

関連するQ&A