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

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

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

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

8471閲覧

JS ラジオボタンやセレクトボタンを元に計算

chanmi

総合スコア19

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2018/04/25 05:16

ラジオボタンで選択されたもの+チェックボックスで選択されたオプション=合計
を算出したいです。
チェックボックスで選択されたものを計算することはできたのですが、ラジオボタンを足す方法がわかりません。
教えていただきたいです。
宜しくお願いします!

HTML

1<form name="myform"> 2  <input type="radio" name="fruit">りんご(¥100) 3  <input type="radio" name="fruit">みかん(¥200) 4  <input type="radio" name="fruit">いちご(¥300) 5  <input type="radio" name="fruit">ぶどう(¥400) 6 7  <input type="checkbox" onclick="option()">プレゼント包装(¥300) 8  <input type="checkbox" onclick="option()">リボン付き(¥200) 9  <input type="checkbox" onclick="option()">保護付き(¥100) 10 11 <input type="text" name="total" value="0"> 円 12</form>

JavaScript

1 plice=new Array(); 2 plice[0]=300; 3 plice[1]=200; 4 plice[2]=100; 5 function option(){ 6 goukei=0; 7 for(i=0;i<=2;i++){ 8 if(document.myform.elements[i].checked==true){ 9 goukei=goukei+plice[i]; 10 } 11 } 12 document.myform.total.value=goukei; 13 }

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

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

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

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

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

kszk311

2018/04/25 05:31 編集

今の処理だと、「プレゼント包装(¥300)」「リボン付き(¥200)」「保護付き(¥100)」のどれかがが押されたら、「りんご(¥100)」「みかん(¥200)」「いちご(¥300) にチェックが入っている時にしか動作しないのは理解していますか?
guest

回答1

0

ベストアンサー

配列を作って固定的に持つより、それぞれのvalueに価格を仕込んでおいた方がデータ管理が明示的で楽になるように思います。

あとはそれぞれのチェックタイミングで現在の全てのvalueの合計値を出す。

HTMLも改編して、以下のようにしてみました。

html

1<form name="myform"> 2  <input type="radio" name="fruit" value="100">りんご(¥100) 3  <input type="radio" name="fruit" value="200">みかん(¥200) 4  <input type="radio" name="fruit" value="300">いちご(¥300) 5  <input type="radio" name="fruit" value="400">ぶどう(¥400) 6 7  <input type="checkbox" name="option[]" value="300">プレゼント包装(¥300) 8  <input type="checkbox" name="option[]" value="200">リボン付き(¥200) 9  <input type="checkbox" name="option[]" value="100">保護付き(¥100) 10 11 <input type="text" name="total" value="0">12</form>

js

1//fruitのクリックを監視 2var fruit_check = document.getElementsByName('fruit'); 3for(i=0;i<fruit_check.length;i++){ 4 fruit_check[i].addEventListener('click', function(e){ 5 price_sum(); 6 }); 7} 8//optionのクリックを監視 9var option_check = document.getElementsByName('option[]'); 10for(i=0;i<option_check.length;i++){ 11 option_check[i].addEventListener('click', function(e){ 12 price_sum(); 13 }); 14} 15//合計計算 16function price_sum(){ 17 var sum = 0; 18 for(var i = 0 ; i < option_check.length ; i ++){ 19 if(option_check[i].checked){ 20 sum += parseInt(option_check[i].value); 21 } 22 } 23 for (var i = 0; i < fruit_check.length; i++){ 24 if(fruit_check[i].checked){ 25 sum += parseInt(fruit_check[i].value); 26 } 27 } 28 document.myform.total.value=sum; 29} 30

投稿2018/04/25 05:36

m.ts10806

総合スコア80850

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

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

chanmi

2018/04/25 05:51

ありがとうございます!!
m.ts10806

2018/04/25 06:00

不明部分はなかったですか? 今回私の回答で使用した技術は様々な場面で利用できるので しっかり押さえておくとやれることの幅が広がります。
chanmi

2018/04/25 06:19

クリックしただけで表示するようにしたいのですが、今のままだと一回フォームを送らないと計算が出ないという認識で合ってますか?
m.ts10806

2018/04/25 06:21

いいえ。 私の回答のコードはラジオボタン、チェックボックスをクリックしただけで計算するようにできています。 送信して計算結果を出す場合はPHPなどサーバー側のプログラミング言語が必要です。
chanmi

2018/04/25 06:25

そうですよね。 クリックしても計算がなされないのですが、、、エラーも出ていません。
m.ts10806

2018/04/25 06:28

ん、それはおかしいですね。 こちらは回答のコードそのままでChrome最新とIE11で動作確認できています。
chanmi

2018/04/25 06:33

動作確認までありがとうございます。 基本的な部分で間違えていそうなのでもう少し頑張ってみます!
chanmi

2018/04/25 06:35

できました!! おさわがせしました。
m.ts10806

2018/04/25 06:35

気になったのですが、回答のコードをそのまま 使ってます? 一部ではなく全部書き換えてもらえればいいようにしたつもりではありましたが、ご自身が書かれたコードと合流させるのであれば競合が起きる可能性もあるので注意が必要です。
m.ts10806

2018/04/25 06:36

あ、よかったです。ほっとしました。
chanmi

2018/04/25 06:41

はい!これから書き換えます! ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問