###前提・実現したいこと
rotosuzx0さん2017/11/1615:24:34
ラジオボタンの組み合わせで数値の変わる自動見積もりフォームを作成したいのですが、作り方がわからず質問させていただきました。
項目は5つになります。
A 3択
B 3択
C 2択
D 3択
E 2択
となっており、全ての項目を選択すると価格を表示するようにしたいです。
###発生している問題・エラーメッセージ
元々項目ごとに数値を入れて足し算という形で作成していたのですが、項目ごとの価格は分からず、組み合わせで結果を表示しないといけない状態です。
###該当のソースコード
javascript
ここにご自身が実行したソースコードを書いてください
※ 数値で計算していた時のものです。
コード
<!-- function keisan(){ var tax = 5; // 消費税率 var i; var p1 = 0; var p2 = 0; var p3 = 0; var p4 = 0; var p5 = 0; var goods1 = document.getElementsByName("goods1"); //チェック済みのラジオボタンを調べて値を取得 for(i=0; i<goods1.length; i++){ if(goods1[i].checked){ p1 = goods1[i].value; break; } } var goods2 = document.getElementsByName("goods2"); //チェック済みのラジオボタンを調べて値を取得 for(i=0; i<goods2.length; i++){ if(goods2[i].checked){ p2 = goods2[i].value; break; } } var goods3 = document.getElementsByName("goods3"); //チェック済みのラジオボタンを調べて値を取得 for(i=0; i<goods3.length; i++){ if(goods3[i].checked){ p3 = goods3[i].value; break; } } var goods4 = document.getElementsByName("goods4"); //チェック済みのラジオボタンを調べて値を取得 for(i=0; i<goods4.length; i++){ if(goods4[i].checked){ p4 = goods4[i].value; break; } } var goods5 = document.getElementsByName("goods5"); //チェック済みのラジオボタンを調べて値を取得 for(i=0; i<goods5.length; i++){ if(goods5[i].checked){ p5 = goods5[i].value; break; } } var price1 = p1 * 1 // 数量×単価 var price2 = p2 * 1// 数量×単価 var price3 = p3 * 1 // 数量×単価 var price4 = p4 * 1 // 数量×単価 var price5 = p5 * 1 // 数量×単価 var total1 = parseInt(price1)+ parseInt(price2)+ parseInt(price3)+ parseInt(price4)+ parseInt(price5); // 税抜き合計を計算 var tax2 = Math.round((total1 * tax) / 100); //消費税を計算 var total2 = total1 + tax2; //税込み合計を計算 //表示用の金額を3桁区切りに変換 var data = new Array(total1,tax2,total2); //金額を配列に格納 var len = data.length; //配列の数を取得 for(cnt=0;cnt<len;cnt++){ data[cnt] = new String(data[cnt]).replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,"); //ここで正規表現で3桁ごとにカンマで区切る } //フォームのテキストエリアに表示する金額 document.form1.field_total1.value = data[0]; // 税抜き合計 } // --> </script> <table cellpadding="0" cellspacing="0" class="pricebox cm_tableStyle_001"> <tr> <th class="label firstchild">A</td> <th class="firstchild_cellMiddle">B</td> <th class="firstchild_cellMiddle">C</td> <th class="firstchild_cellMiddle">D</td> <th class="firstchild_right">E</td> </tr> <tr> <td class="cellLeft" style="border-bottom: solid 1px #ccc;"> <input type="radio" name="goods1" id="goods1" value="120000" onClick="keisan()" />1<br> <input type="radio" name="goods1" id="goods1" value="40000" onClick="keisan()" />2<br> <input type="radio" name="goods1" id="goods1" value="20000" onClick="keisan()" />3<br> </td> <td class="firstchild_cellMiddle" style="border-bottom: solid 1px #ccc;"> <input type="radio" name="goods2" id="goods2" value="1000" onClick="keisan()" />4<br> <input type="radio" name="goods2" id="goods2" value="2000" onClick="keisan()" />5<br> <input type="radio" name="goods2" id="goods2" value="3000" onClick="keisan()" />6 </td> <td class="firstchild_cellMiddle" style="border-bottom: solid 1px #ccc;"> <input type="radio" name="goods3" id="goods3" value="60000" onClick="keisan()" />7<br> <input type="radio" name="goods3" id="goods3" value="60000" onClick="keisan()" />8 </td> <td class="firstchild_cellMiddle" style="border-bottom: solid 1px #ccc;"> <input type="radio" name="goods4" id="goods4" value="130" onClick="keisan()" />9<br> <input type="radio" name="goods4" id="goods4" value="160" onClick="keisan()" />10<br> <input type="radio" name="goods4" id="goods4" value="200" onClick="keisan()" />11 </td> <td class="cellRight" style="border-bottom: solid 1px #ccc;"> <input type="radio" name="goods5" id="goods5" value="130" onClick="keisan()" />12<br> <input type="radio" name="goods5" id="goods5" value="530" onClick="keisan()" />13 </td> </tr> <tr> </table>
###試したこと
課題に対してアプローチしたことを記載してください
ラジオボタンで選択している、していないを1か0で表示する形で
全13項目をスクリプトに入れて考えるのかな、というところまでは行きついたのですがソースの書き方で詰まっています。また、かなり数も多くなるのでページが重たくならないか心配です。
11/21 追記
ご連絡ありがとうございます。
現状、要素一つ一つに価格を設定して足し算といったものができないため、各項目にユニークなアルファベットを振り、その連結でユニークキーを作成。項目を選択することでアルファベットが選択され、出来たユニークキー
から該当の価格を引っ張ってくるといったプログラムを考えています。
問1 abc
問2 def
問3 ghi
問4 jkl
とした場合 aegkではこの数値、といった計算です。
こういったものは実現可能なのでしょうか?
追記 2
ルールはありません。caseで区切って書くようになるかと思います。
お話を伺った方から資料としていただいたものも108パターン分書かれており、個別の単価は決まっておりません。
回答2件
あなたの回答
tips
プレビュー