質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

935閲覧

割引を適用した実際のお支払旅行代金を表示するフォームのプログラムを完成させたいです。

wonderful6309

総合スコア1

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2020/06/02 08:33

前提・実現したいこと

最終的に購入者が支払う旅行代金を算出したいです。
ただ算出に当たっては、1泊当たり20,000円を上限に、代金の2分の1に相当する金額が割引となります。

例 
1泊2日 旅行代金50,000円の場合、半額は25,000円ですが、上限が20000円なので
旅行代金の支払額は30,000円


2泊3日 旅行代金50,000円の場合、半額は25,000円、上限が20000円X2泊=40,000円なので、旅行代金の支払額は25,000円

発生している問題・エラーメッセージ

1泊当たりのおひとり様代金X泊数で通常の旅行代金の算出はできたのですが、
旅行代金の半額に対し、1泊当たりの上限の範囲内で、割引を適用するコードを書くことができず、お支払額を算出できないでいます。

該当のソースコード

<div class="sample_wrap"> <h1 class="sample_h1">GO TO TRAVELいくら割引されるの?</h1> <p class="sample_p">旅行代金合計と泊数入力してください</p> <form name="daikin" class="sample_form" method="post" action=""> <table class="sample_table"> <tbody><tr> <!--旅行単価を表示--> <th class="sample_th"> <label for="textForm1">単価: </label></th> <td class="sample_td"><input type="text" id="textForm1" class="sample_input"> 円</td> </tr> <tr> <!--泊数を表示--> <th class="sample_th"> <label for="textForm2">泊数: </label></th> <!-- <input type="text" id="textForm2">--> <td class="sample_td"> <select name="term" id="textForm2" class="sample_input"> <option value="1" selected>1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> <option value="7">7</option> </select> 泊 </td> </tr> <tr>
<!--通常の旅行代金を表示--> <th class="sample_th"> <label for="resultForm">通常の旅行代金: </label></th> <td class="sample_td"><input type="text" id="resultForm" class="sample_input">円</td> </tr> <tr> <!--割引額を表示--> <th class="sample_th"> <label for="textForm3">割引額: </label></th> <td class="sample_td"><input type="text" id="textForm3" class="sample_input">円</td> </tr> <tr> <!--お支払いの旅行代金を表示--> <th class="sample_th"> <label for="resultForm2">お支払旅行代金: </label></th> <td class="sample_td"><input type="text" id="resultForm2" class="sample_input">円 </td> </tr>
</tbody> </table> <button type="button" id="button">計算</button> <button type="button" id="clear" onclick="formReset()">リセット</button> </form> </div> </body> <!--********************************************** jsの起動エリア **********************************************--> <script> // ボタンの要素を取得 var button = document.getElementById("button"); // ボタンをクリックした時の処理 button.addEventListener("click", function(e) { e.preventDefault(); // 2つの入力フォームの値を取得 var textForm1 = document.getElementById("textForm1").value; var textForm2 = document.getElementById("textForm2").value; // 2つの数値を乗じる var sum = parseInt(textForm1, 10) * parseInt(textForm2, 10) ; // var sum = textForm1 + textForm2; // 通常の代金を別の入力フォームに表示 var resultForm = document.getElementById("resultForm"); resultForm.value = sum; }); //フォームの入力内容のリセット function formReset() { document.daikin.reset(); } </script>

試したこと

javascriptでトライしたのですが(もともと浅薄な知識)、
第一次的に通常の旅行代金までは語.付けたのですが、割引額の算出と最終的にお客様が支払う金額をフォームに表示するに至りませんでした。

補足情報(FW/ツールのバージョンなど)

1.先ず、通常の旅行代金を算出
2.通常代金の半額を算出
3.半額代金が1泊当たり20000円の上限以内であれば半額のお支払となり、
上限を超える湯であれば、半額ではなく20000円X泊数分の割引となります。

分かりにくい文章で真位恐縮ですがご教示のほどよろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gentaro

2020/06/02 08:40

なんか「プログラミングで困ってる」というより「算数で困ってる」という質問に見えますが…。 まずちゃんと計算の過程を仕様として文章に起こせますか? 具体的な人数別、金額別にありえるパターンと期待する結果を列挙できますか? それができるなら、計算式を関数としてコードにそのまま書いて、テストするだけの作業ですよ。
guest

回答1

0

ベストアンサー

旅行代金の半額に対し、1泊当たりの上限の範囲内で、割引を適用するコード

Math.min()を使うといいかと思います。

Math.min() 静的関数は、引数に渡される最小の値...を返します。

Math.min() - JavaScript | MDN

1泊2日 旅行代金50,000円の場合、半額は25,000円ですが、上限が20000円なので旅行代金の支払額は30,000円

javascript

150000 - Math.min( 50000 * 0.5, 20000 * 1 ) 2//30000

2泊3日 旅行代金50,000円の場合、半額は25,000円、上限が20000円X2泊=40,000円なので、旅行代金の支払額は25,000円

javascript

150000 - Math.min( 50000 * 0.5, 20000 * 2 ) 2//25000

投稿2020/06/03 01:12

Lhankor_Mhy

総合スコア36960

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wonderful6309

2020/06/03 02:20

お忙しい中、ご教示いただきまして誠にありがとうございました。 これから、再トライしてみます。 重ねて御礼申し上げます。 p.s. teratailを初めて利用したため、質問の仕方などの記述表現が悪くご迷惑おかけしました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問