if文がうまくいかず、運賃計算できない。
javascriptで運賃計算をやっていますが、
いかんせん、if文の挙動がきちんと動かず、運賃計算できません。
問題はifにかかる内容だと思われます。
セレクトBから中百舌鳥をセレクトCから深井を選択した場合と
Bから中百舌鳥、Cから泉ケ丘を指定した場合に違う指定にしたいのですが、
挙動がうまくいきません。
if((A.B.value == "nakamozu")&&A.C.value=="fukai"))が間違っているものと思われます。
以下はそのhtml文です。
<!DOCTYPE html>
<meta charset="utf-8">
<title></title>
<style>
</style>
<body>
<form id=A>
<select id=B>
<option value="">--
<option value="nakamozu">中百舌鳥
<option value="fukai">深井
<option value="izumigaoka">泉ケ丘
<option value="a0">a0
<option value="a1">a1
<option value="a2">a2
</select>
セレクトBとCは同じなため、省略。
</form>
<p id=D></p>
<script>
if((A.B.value == "nakamozu")&&A.C.value=="fukai")){
const vals = {
'nakamozufukai':3.7,
},
len = [1, 2, 4, 6, 8, 10, 12, 14, 16],
prc = ['運賃170(90),<br>回数券1,700(900),<br>通勤_1か月6,540(3,270)_3か月18,640(9,320)_6か月35,320(17,660),通学_1か月3,030(1,520)_3か月8,640(4,320)_6か月_16,370(8,190)',
'運賃170(90),回数券1,700(900),<br>通勤_1か月6,540(3,270)_3か月18,640(9,320)_6か月35,320(17,660),通学_1か月3,030(1,520)_3か月8,640(4,320)_6か月_16,370(8,190)',
'運賃190(100),回数券1,900(1,000),<br>通勤_1か月7,360(3,680)_3か月20,980(10,490)_6か月39,750(19,880),通学_1か月3,470(1,700)_3か月9,690(4,850)_6か月_18,360(9,180)',
'運賃210(110),回数券2,100(1,100),<br>通勤_1か月8,180(4,090)_3か月23,320(11,680)_6か月44,180(22,090),通学_1か月3,780(1,890)_3か月10,780(5,390)_6か月_20,420(10,210)',
'運賃230(120),回数券2,300(1,200),<br>通勤_1か月8,990(4,500)_3か月25,630(12,820)_6か月48,550(24,280),通学_1か月4,160(2,080)_3か月11,860(5,930)_6か月_22,470(11,240)',
'運賃250(130),回数券2,500(1,300),<br>通勤_1か月9,810(4,910)_3か月27,960(13,980)_6か月52,980(26,490),通学_1か月4,530(2,270)_3か月12,920(6,460)_6か月_24,470(12,240)',
'運賃270(140),回数券2,700(1,400),<br>通勤_1か月10,620(5,310)_3か月30,270(15,140)_6か月57,350(28,680),通学_1か月4,910(2,460)_3か月14,000(7,000)_6か月_26,520(13,260)',
'運賃290(150),回数券2,900(1,500),<br>通勤_1か月11,450(5,730)_3か月32,840(16,320)_6か月52,980(30,920),通学_1か月5,290(2,650)_3か月15,080(7,540)_6か月_28,570(14,290)'],
f = (_, l = Math.floor(_)) => D.innerHTML = l ? prc[len.findIndex(_ => _ > l)] + '円' : '';
A.addEventListener('change', _ => f(vals[(_ = B.value) + (__ = C.value)] || vals[__ + _]));}
else {const vals = {
'nakamozuizumigaoka':7.8,
'a0b0': 1.2,
'a0b1': 12,
'a0b2': 28.8,
},
len = [1, 2, 4, 6, 8, 10, 12, 14, 16],
prc = ['運賃170(90),<br>回数券1,700(900),<br>通勤_1か月6,540(3,270)_3か月18,640(9,320)_6か月35,320(17,660),通学_1か月3,030(1,520)_3か月8,640(4,320)_6か月_16,370(8,190)',
'運賃170(90),回数券1,700(900),<br>通勤_1か月6,540(3,270)_3か月18,640(9,320)_6か月35,320(17,660),通学_1か月3,030(1,520)_3か月8,640(4,320)_6か月_16,370(8,190)',
'運賃190(100),回数券1,900(1,000),<br>通勤_1か月7,360(3,680)_3か月20,980(10,490)_6か月39,750(19,880),通学_1か月3,470(1,700)_3か月9,690(4,850)_6か月_18,360(9,180)',
'運賃210(110),回数券2,100(1,100),<br>通勤_1か月8,180(4,090)_3か月23,320(11,680)_6か月44,180(22,090),通学_1か月3,780(1,890)_3か月10,780(5,390)_6か月_20,420(10,210)',
'運賃230(120),回数券2,300(1,200),<br>通勤_1か月8,990(4,500)_3か月25,630(12,820)_6か月48,550(24,280),通学_1か月4,160(2,080)_3か月11,860(5,930)_6か月_22,470(11,240)',
'運賃250(130),回数券2,500(1,300),<br>通勤_1か月9,810(4,910)_3か月27,960(13,980)_6か月52,980(26,490),通学_1か月4,530(2,270)_3か月12,920(6,460)_6か月_24,470(12,240)',
'運賃270(140),回数券2,700(1,400),<br>通勤_1か月10,620(5,310)_3か月30,270(15,140)_6か月57,350(28,680),通学_1か月4,910(2,460)_3か月14,000(7,000)_6か月_26,520(13,260)',
'運賃290(150),回数券2,900(1,500),<br>通勤_1か月11,450(5,730)_3か月32,840(16,320)_6か月52,980(30,920),通学_1か月5,290(2,650)_3か月15,080(7,540)_6か月_28,570(14,290)'],
f = (_, l = Math.floor(_)) => D.innerHTML = l ? prc[len.findIndex(_ => _ > l)] + '円' : '';
A.addEventListener('change', _ => f(vals[(_ = B.value) + (__ = C.value)] || vals[__ + _]));
}
</script>
if文の挙動がおかしいため、どうしても、表示がうまくいきません。
どうしたらいいですか。
後、scriptの内容は、1つ目のイベントの部分は残さず書いといてください。
お礼
ありがとうございました!! 上手く出来ました。 アドバイスありがとうございます。おっしゃるとおりです、これからはちゃんと理解して書くようにします!! ありがとうございます!!