2つ目のjsが正常に動きません。なぜですか。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
えっぴ~

2つ目のjsが正常に動きません。なぜですか。

#1

投稿記事 by えっぴ~ » 1年前

1つ目のjs。
function semboku_kotae()
{
semboku_ten=0
if((semboku_f.semboku_q1.value == "中百舌鳥"&&semboku_f.semboku_q2.value == "深井")||(semboku_f.semboku_q1.value == "深井"&&semboku_f.semboku_q2.value == "中百舌鳥"))
{semboku_f.semboku_q1.style.backgroundColor="aqua ";semboku_ten = semboku_ten + 3.7}

else if((semboku_f.semboku_q1.value == "光明池"&&semboku_f.semboku_q2.value == "和泉中央")||(semboku_f.semboku_q1.value == "和泉中央"&&semboku_f.semboku_q2.value == "光明池"))
{semboku_f.semboku_q1.style.backgroundColor="aqua ";semboku_ten = semboku_ten + 2.2}
else semboku_f.semboku_q1.style.backgroundColor="red"
semboku_f.semboku_tokuten.value=semboku_ten
//ここから
if(semboku_f.semboku_tokuten.value<2){semboku_f.semboku_rank.value='普通券\n170(90)\n回数券\n1,700(900)\n定期(通勤)\n1か月_6,540(3,270)\n3か月_18,640(9,320)\n6か月_35,320(17,660)\n定期(通学)\n1か月_3,030(1,520)\n3か月_8,640(4,320)\n6か月_16,370(8,190)'}
else if((semboku_f.semboku_tokuten.value<4)&&(!((semboku_f.semboku_q1.value == "光明池"&&semboku_f.semboku_q2.value == "和泉中央")||(semboku_f.semboku_q1.value == "和泉中央"&&semboku_f.semboku_q2.value == "光明池"))))
{semboku_f.semboku_rank.value='普通券\n190(100)\n回数券\n1,900(1,000)\n定期(通勤)\n1か月_7,360(3,680)\n3か月_20,980(10,490)\n6か月_39,750(19,880)\n定期(通学)\n1か月_3,400(1,700)\n3か月_9,690(4,850)\n6か月_18,360(9,180)'}

<!--特例-->
else if((semboku_f.semboku_tokuten.value<15)&&((semboku_f.semboku_q1.value == "中百舌鳥"&&semboku_f.semboku_q2.value == "和泉中央")||(semboku_f.semboku_q1.value == "和泉中央"&&semboku_f.semboku_q2.value == "中百舌鳥")))
{semboku_f.semboku_rank.value='普通券\n330(170)\n回数券\n3,300(1,700)\n定期(通勤)\n1か月_13,100(6,550)\n3か月_37,340(18,670)\n6か月_70,740(35,370)\n定期(通学)\n1か月_6,050(3,030)\n3か月_17,250(8,630)\n6か月_32,670(16,340)'}

//ここまで
}
2つ目のjs
function hanwa_kotae()
{
hanwa_ten=0
if((hanwa_f.hanwa_q1.value == "北信太"&&hanwa_f.hanwa_q2.value == "信太山")||(hanwa_f.hanwa_q1.value == "信太山"&&hanwa_f.hanwa_q2.value == "北信太"))
{hanwa_f.hanwa_q1.style.backgroundColor="aqua ";hanwa_ten = hanwa_ten + 1.4}
else if((hanwa_f.hanwa_q1.value == "北信太"&&hanwa_f.hanwa_q2.value == "和泉府中")||(hanwa_f.hanwa_q1.value == "信太山"&&hanwa_f.hanwa_q2.value == "和泉府中"))
{hanwa_f.hanwa_q1.style.backgroundColo="aqua ";hanwa_ten = hanwa_ten + 2.9}
else if((hanwa_f.hanwa_q1.value == "信太山"&&hanwa_f.hanwa_q2.value == "和泉府中")||(hanwa_f.hanwa_q1.value == "和泉府中"&&hanwa_f.hanwa_q2.value == "信太山"))
{hanwa_f.hanwa_q1.style.backgroundColor="aqua ";hanwa_ten = hanwa_ten + 1.5}
else hanwa_f.hanwa_q1.style.backgroundColor="red"
hanwa_f.hanwa_tokuten.value=hanwa_ten

//ここから
if(hanwa_f.hanwa_tokuten.value<3){hanwa_f.hanwa_rank.value='普通券\n130(60)\n回数券\nnull(null)\n定期(通勤)\n1か月_3,960(null)\n3か月_11,330(null)\n6か月_19,020(null)\n定期(通学)\n1か月_2,300(null)\n3か月_6,590(null)\n6か月_12,480(null)'}
//ここまで
else {hanwa_f.hanwa_rank.value='なし'}
}
html文
<script src="泉北2個func別々泉北 外部 2022-8-1 Mon\jsファイル 2022-8-1 Mon\運賃 2022-8-1 Mon.js"></script>
<script src="阪和2個11-2 外部 2022-8-1 Mon\jsファイル 2022-8-1 Mon\運賃 2022-8-1 Mon.js"></script>
<style>
textarea.hoge { width: 150px; height:200px;}
</style>
<body>
<form name="semboku_f">
出発駅は
<select name="semboku_q1">
<option>選択肢</option>
<option>中百舌鳥</option>
<option>深井</option>
<option>泉ケ丘</option>
<option>栂・美木多</option>
<option>光明池</option>
<option>和泉中央</option>
<option>名古屋市</option>
<option>松山市</option>
<option>金沢市</option>
<option>高松市</option>
</select>
です。
<p>
到着駅は
<select name="semboku_q2">
<option>選択肢</option>
<option>中百舌鳥</option>
<option>深井</option>
<option>泉ケ丘</option>
<option>栂・美木多</option>
<option>光明池</option>
<option>和泉中央</option>
<option>名古屋市</option>
<option>松山市</option>
<option>金沢市</option>
<option>高松市</option>
</select>
です。<p>
<input type="button" name="b1" value="運賃検索" onclick="semboku_kotae()"> <p>
<input name=semboku_tokuten size="6">km
<!--HTMLここから-->
<!--ランク-->
<textarea name=semboku_rank style="width:150px; height:200px;">テキストエリア</textarea>
<!--HTMLここまで-->
<!--問題-->
<br>
<!--阪和線-->
<script src="阪和2個11-2 外部 2022-8-1 Mon\jsファイル 2022-8-1 Mon\運賃 2022-8-1 Mon.js"></script>
<body>
<form name="hanwa_f">
出発駅は
<select name="hanwa_q1">
<option>選択肢</option>
<option>北信太</option>
<option>信太山</option>
<option>和泉府中</option>
<option>中百舌鳥</option>
<option>深井</option>
<option>泉ケ丘</option>
<option>名古屋市</option>
<option>松山市</option>
<option>金沢市</option>
<option>高松市</option>
</select>
です。
<p>
到着駅は
<select name="hanwa_q2">
<option>選択肢</option>
<option>北信太</option>
<option>信太山</option>
<option>和泉府中</option>
<option>中百舌鳥</option>
<option>深井</option>
<option>泉ケ丘</option>
<option>名古屋市</option>
<option>松山市</option>
<option>金沢市</option>
<option>高松市</option>
</select>
です。<p>
<input type="button" name="b2" value="運賃検索" onclick="hanwa_kotae()"> <p>
<input name=hanwa_tokuten size="6">km
<!--HTMLここから-->
<!--ランク-->
<textarea name=hanwa_rank style="width:150px; height:200px;">テキストエリア</textarea>
<!--HTMLここまで-->
<!--問題-->
なのですが、
自分は今何がしたくて→2つ以上の運賃計算プログラムを共存させたいです。
どう取り組んで(作ったプログラムはどれで→以上2つのjsとhtmlです。
どのようなエラーやトラブルで困っていて→1個目が動くのですが、2個目が動かないです。
それぞれ単独で記述すれば動きました。
自分は何が解らないのか、知りたいのか→以上の情報から、変数がだぶっている、例えば、
1つ目のセレクトボックスの名前と2つ目のセレクトボックスの名前がだぶっていたら、動かないのはわかっています。かもしくは、変えなくていい変数があるかのどちらかだと思います。
今のCの知識はどの程度なのか→初心者です。

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: 2つ目のjsが正常に動きません。なぜですか。

#2

投稿記事 by みけCAT » 1年前

何かcodeタグを使わずに投稿することにこだわる理由はありますか?
えっぴ~ さんが書きました:
1年前
1個目が動くのですが、2個目が動かないです。
「1つ目のjs」が「泉北2個func別々泉北 外部 2022-8-1 Mon\jsファイル 2022-8-1 Mon\運賃 2022-8-1 Mon.js」、
「2つ目のjs」が「阪和2個11-2 外部 2022-8-1 Mon\jsファイル 2022-8-1 Mon\運賃 2022-8-1 Mon.js"」
だと仮定して検証を行いました。

そのままコピペしてFirefox 103.0.1で開くと、「1つ目のjs」の6行目で

コード:

Uncaught SyntaxError: illegal character U+FF5E
というエラーが出ました。
これは、不正な文字「~」が含まれているためなので、2個の「~」をコメントアウトしました。

その後、下の「運賃検索」ボタンをクリックすると、「2つ目のjs」の4行目で

コード:

Uncaught ReferenceError: hanwa_f is not defined
というエラーが出ました。

インスペクタで確認すると、

コード:

<form name="semboku_f">
はあったものの、「html文」にあるはずの

コード:

<form name="hanwa_f">
は認識されていませんでした。
これは、1個目のformタグを閉じずに2個目のformタグを置いているためであると考えられます。
(HTML Standard によると、formタグは開始も終了も省略できないようです)

コード:

<!--阪和線-->
の直前に

コード:

</form>
を追加すると、2個目の「運賃検索」ボタンをクリックしてもエラーが出ずに表示が変化するようになりました。

また、この「html文」には他にも
・同じスクリプトファイルが2回読み込まれている
・bodyタグが2個ある
という不自然な点があります。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

えっぴ~

Re: 2つ目のjsが正常に動きません。なぜですか。

#3

投稿記事 by えっぴ~ » 1年前

やっぱり、タグの記述ミスだったのですね。
タグの終了宣言をしないと挙動不良が起こるんですね。
<form name="semboku_f">の</form>と、
<input type="button" name="b1" value="運賃検索" onclick="semboku_kotae()"> <p>や
<input name=semboku_tokuten size="6">kmの</input>を書くと治りました。
ありがとうございます。

返信

“C言語何でも質問掲示板” へ戻る