• 締切済み

javascriptでの完全一致による表記(3)

前回、以下の質問に対して素晴らしいコードをお教えいただきました。 ホームページに組み込みを行っている最中にどうしても追加したい機能がありまして。 下部のコードは、以下の仕組みになっています。 往路⇒【東京】→【名古屋】=<単価>*【枚数】=<合計> 復路⇒【名古屋】→【東京】=<単価>*【枚数】=<合計> 【支払方法*1】=<割引額> 往路+復路-割引額=<合計金額> *1:銀行振込と代金引換があり、銀行振込を選択しますと、割引が行われる仕組みです。 組み込みたいと思っている機能ですが、銀行振込を選択しますと、100円引きになっていますが、 銀行振込を選択した場合、1枚毎に100円割引をしたいです。 以下のような感じです。 (往路枚数+復路枚数)*100⇒往路合計+復路合計-割引額=合計 特にフォームを追加したいとかではありません。 割引額を表示するフォームに「(往路枚数+復路枚数)*100」この計算を表示し、 総合計に往路合計+復路合計-割引額を表示したいです。 JavaScriptにお詳しい方、何卒、よろしくお願いいたします。 ↓以下コード↓ <script type="text/javascript"><!-- var ryoukinhyo={ "東京":{ "名古屋":{ "自由席":{"価格":100} } }, "名古屋":{ "東京":{ "自由席":{"価格":100} } } } var waribikihyo={ "銀行振込":100, "代金引換":0 } function check(f){ var shuppatu=f.shuppatu.value; var touchaku=f.touchaku.value; var shubetu =f.shubetu.value; var paytype =f.paytype.value; var maisu =parseInt(f.maisu.value); var maisu2 =parseInt(f.maisu2.value); var tanka =f.tanka; var tanka2 =f.tanka2; var waribiki = f.waribiki; var goukei =f.goukei; var p2 = 0; if(!shuppatu || !touchaku || !shubetu || !paytype || !maisu) return false; var p=(!ryoukinhyo[shuppatu] || !ryoukinhyo[shuppatu][touchaku] || !ryoukinhyo[shuppatu][touchaku][shubetu])?false:ryoukinhyo[shuppatu][touchaku][shubetu]["価格"]*maisu; if(p) { tanka.value=p.toString(); if(f.shuppatu2.value && f.touchaku2.value && f.shubetu2.value && maisu2){ p2=(!ryoukinhyo[f.shuppatu2.value] || !ryoukinhyo[f.shuppatu2.value ][f.touchaku2.value] || !ryoukinhyo[f.shuppatu2.value][f.touchaku2.value][f.shubetu2.value])?false:ryoukinhyo[f.shuppatu2.value][f.touchaku2.value][f.shubetu2.value]["価格"]*maisu2; if(p2){tanka2.value=p2.toString();} } if(waribikihyo[paytype]){ waribiki.value=waribikihyo[paytype].toString(); }else{ waribiki.value="割引はありません"; } goukei.value=(p + p2 - waribikihyo[paytype]).toString(); }else{ tanka.value="0"; waribiki.value="割引はありません"; goukei.value="【この区間は、販売しておりません】"; } } --></script> <form> 往路:<select name="shuppatu" onchange="check(this.form)"> <option value="">出発選択</option> <option value="東京">東京</option> <option value="名古屋">名古屋</option> </select> <select name="touchaku" onchange="check(this.form)"> <option value="">到着選択</option> <option value="名古屋">名古屋</option> <option value="東京">東京</option> </select> <select name="shubetu" onchange="check(this.form)"> <option value="">種別選択</option> <option value="自由席">自由席</option> </select> <select name="maisu" onchange="check(this.form)"> <option value="1">1</option> <option value="2">2</option> </select><br> 復路:<select name="shuppatu2" onchange="check(this.form)"> <option value="">出発選択</option> <option value="東京">東京</option> <option value="名古屋">名古屋</option> </select> <select name="touchaku2" onchange="check(this.form)"> <option value="">到着選択</option> <option value="名古屋">名古屋</option> <option value="東京">東京</option> </select> <select name="shubetu2" onchange="check(this.form)"> <option value="">種別選択</option> <option value="自由席">自由席</option> </select> <select name="maisu2" onchange="check(this.form)"> <option value="1">1</option> <option value="2">2</option> </select><br> <select name="paytype" onchange="check(this.form)"> <option value="">支払選択</option> <option value="銀行振込">銀行振込</option> <option value="代金引換">代金引換</option> </select> <div>往路合計:<input type="text" name="tanka" value="0" /> + 復路合計:<input type="text" name="tanka2" value="0" /> - 割引:<input type="text" name="waribiki" value="0" /> = 合計:<input type="text" name="goukei" /></div> </form>

みんなの回答

  • yamada_g
  • ベストアンサー率68% (258/374)
回答No.1

JavaScriptにお詳しい方ではありませんが。 3行追加、2行変更してます。 <script type="text/javascript"><!-- var ryoukinhyo={ "東京":{ "名古屋":{ "自由席":{"価格":100} } }, "名古屋":{ "東京":{ "自由席":{"価格":100} } } } var waribikihyo={ "銀行振込":100, "代金引換":0 } function check(f){ var shuppatu=f.shuppatu.value; var touchaku=f.touchaku.value; var shubetu =f.shubetu.value; var paytype =f.paytype.value; var maisu =parseInt(f.maisu.value); var maisu2 =parseInt(f.maisu2.value); var soumaisu = 0; //追加 var tanka =f.tanka; var tanka2 =f.tanka2; var waribiki = f.waribiki; var goukei =f.goukei; var p2 = 0; if(!shuppatu || !touchaku || !shubetu || !paytype || !maisu) return false; var p=(!ryoukinhyo[shuppatu] || !ryoukinhyo[shuppatu][touchaku] || !ryoukinhyo[shuppatu][touchaku][shubetu])?false:ryoukinhyo[shuppatu][touchaku][shubetu]["価格"]*maisu; soumaisu += maisu; //追加 if(p) { tanka.value=p.toString(); if(f.shuppatu2.value && f.touchaku2.value && f.shubetu2.value && maisu2){ p2=(!ryoukinhyo[f.shuppatu2.value] || !ryoukinhyo[f.shuppatu2.value ][f.touchaku2.value] || !ryoukinhyo[f.shuppatu2.value][f.touchaku2.value][f.shubetu2.value])?false:ryoukinhyo[f.shuppatu2.value][f.touchaku2.value][f.shubetu2.value]["価格"]*maisu2; soumaisu += maisu2; //追加 if(p2){tanka2.value=p2.toString();} } if(waribikihyo[paytype]){ //waribiki.value=waribikihyo[paytype].toString(); 変更 waribiki.value=(waribikihyo[paytype] * soumaisu).toString(); }else{ waribiki.value="割引はありません"; } //goukei.value=(p + p2 - waribikihyo[paytype]).toString(); 変更 goukei.value=(p + p2 - (waribikihyo[paytype] * soumaisu)).toString(); }else{ tanka.value="0"; waribiki.value="割引はありません"; goukei.value="【この区間は、販売しておりません】"; } } --></script> <form> 往路:<select name="shuppatu" onchange="check(this.form)"> <option value="">出発選択</option> <option value="東京">東京</option> <option value="名古屋">名古屋</option> </select> <select name="touchaku" onchange="check(this.form)"> <option value="">到着選択</option> <option value="名古屋">名古屋</option> <option value="東京">東京</option> </select> <select name="shubetu" onchange="check(this.form)"> <option value="">種別選択</option> <option value="自由席">自由席</option> </select> <select name="maisu" onchange="check(this.form)"> <option value="1">1</option> <option value="2">2</option> </select><br> 復路:<select name="shuppatu2" onchange="check(this.form)"> <option value="">出発選択</option> <option value="東京">東京</option> <option value="名古屋">名古屋</option> </select> <select name="touchaku2" onchange="check(this.form)"> <option value="">到着選択</option> <option value="名古屋">名古屋</option> <option value="東京">東京</option> </select> <select name="shubetu2" onchange="check(this.form)"> <option value="">種別選択</option> <option value="自由席">自由席</option> </select> <select name="maisu2" onchange="check(this.form)"> <option value="1">1</option> <option value="2">2</option> </select><br> <select name="paytype" onchange="check(this.form)"> <option value="">支払選択</option> <option value="銀行振込">銀行振込</option> <option value="代金引換">代金引換</option> </select> <div>往路合計:<input type="text" name="tanka" value="0" /> + 復路合計:<input type="text" name="tanka2" value="0" /> - 割引:<input type="text" name="waribiki" value="0" /> = 合計:<input type="text" name="goukei" /></div> </form>

関連するQ&A