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

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

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

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

HTML

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

Q&A

解決済

2回答

896閲覧

特定のラジオグループを選んでいる場合、任意のラジオグループの値を割り引く方法

J_aoi

総合スコア0

JavaScript

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

HTML

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

0グッド

0クリップ

投稿2021/09/12 15:55

編集2021/09/13 11:46

前提・実現したいこと

HTMLとJavaScriptでラジオボタンを用いて数値計算をするときに
ラジオグループAの項目を選択していた場合、ラジオグループBの数値を半額にする
例:果物(グループA)を買っている場合、かご(グループB)を1000円(50%off)で購入できる
取得した値を足し合わせ正規表現に直した後テキストボックスに表示する←ここはできている
という動作を実装したいのですがどのようにすればいいのでしょうか 

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

テキストボックスに数値が表示されない(どの段階の処理で止まっているかは不明)

該当のソースコード

JavaScript

1function keisan(){ 2 3var i; 4var p1 = 0; 5var p2 = 0; 6 7var group1 = document.getElementsByName("group1"); //チェック済みのラジオボタンを調べて値を取得 8for(i=0; i<group1.length; i++){ 9if(group1[i].checked){ 10p1 = group1[i].value; 11break; 12} 13} 14var group2 = document.getElementsByName("group2"); 15for(i=0; i<group2.length; i2++){ 16if(group2[i].checked ){ 17 p2 = group2[i].value; 18break; 19} 20} 21 22var price1 = p1 * document.form1.volume1 .selectedIndex; // 数量×単価 23var price2 = p2 // 単価 24 25var price1 = parseInt(group1)+parseInt(group2) 26 27//表示用の金額を3桁区切りに変換 28var data = new Array(price1); 29var len = data.length; 30 31for(cnt=0;cnt<len;cnt++){ 32data[cnt] = new String(data[cnt]).replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,"); //正規表現で3桁ごとにカンマで区切る 33} 34 35//フォームに表示する金額 36document.form1.field_price1.value = data[1]; 37}

HTML

1<h3 data-label="01"><span>ご希望の商品</span></h3> 2 <ul> 3 <li> 4<label> 5 <input type="radio" name="group1" id="group1" value="100" onClick="keisan()" /><span class="radio">りんご</span> 6 <span>単価 100円/1個</span> 7 </label> 8 </li> 9 </ul> 10 <ul> 11 <li> 12 <label> 13 <input type="radio" name="group1" id="group1" value="200" onClick="keisan()" /><span class="radio">桃<br class="sp_only"> 14 <span>単価 200円/1個</span> 15 </label> 16 </li> 17 </ul> 18 <ul> 19 <li> 20 <label> 21 <input type="radio" name="group1" id="group1" value="120" onClick="keisan()" /><span class="radio">みかん</span> 22 <span>単価 120円/1個</span> 23 </label> 24 </li> 25 </ul> 26 <ul> 27 <li> 28 <label> 29 <input type="radio" name="group1" id="group1" value="220" onClick="keisan()" /><span class="radio">梨</span> 30 <span>単価 220円/1個</span> 31 </label> 32 </li> 33 </ul> 34 </div> 35 </div> 36 <div class="shohin2"> 37 <h3 data-label="05"><span>ご希望の商品</span></h3> 38 <ul> 39 <li> 40 <label> 41 <input type="radio" name="group2" id="group2" value="2000" onClick="keisan()" /><span class="radio">かご</span> 42 <span>単価 2000円/1個</span> 43 </label> 44 </li> 45 </ul> 46 <ul> 47 <li> 48 <label> 49 <input type="radio" name="group2" id="group2" value="1000" onClick="keisan()" /><span class="radio">箱<br class="sp_only"> 50 <span>単価 1000円/1箱</span> 51 </label> 52 </li> 53 54 </ul> 55<div class="estimate_result"> 56 <h3 class="kingaku">合計金額</h3> 57 <dl> 58 <dt>施工費</dt> 59 <dd><input type="text" name="field_price1" size="8" value="0"> 円</dd> 60</dl> 61</div>

試したこと

JavaScript

1var group2 = document.getElementsByName("group2"); 2for(i=0; i<group2.length; i2++){ 3if(group2[i].checked ){ 4 if(group1[i].checked ){ 5 p2 = group2[i].value*0.5; 6 }else{ 7 p2 = group2[i].value; 8break;

など色々試しました

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

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

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

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

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

m.ts10806

2021/09/12 20:17 編集

HTMLも提示してください。 ただ、このコードエラー出ませんか? { が閉じられてない半端なコードです。 他者がコピペで再現できるように配慮願います。
J_aoi

2021/09/13 08:00

追加、修正しました
guest

回答2

0

自己解決

JavaScript

1var group2 = document.getElementsByName("group2"); 2for(i2=0; i2<group2.length; i2++){ 3if(group2[i2].checked && group1[i].checked){ 4p4 = group4[i2].value*0.5; 5break; 6}else if (group4[i2].checked){ 7p4 = group4[i2].value; 8break;

投稿2021/09/13 12:09

J_aoi

総合スコア0

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

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

0

javascript

1<script> 2window.addEventListener('DOMContentLoaded', ()=>{ 3 document.querySelectorAll('[type=radio]').forEach(x=>{ 4 x.addEventListener('input',()=>{ 5 if(document.querySelector('[name=a]:checked')){ 6 answer.value=Number(document.querySelector('[name=a]:checked')?.value||0)+Number(document.querySelector('[name=b]:checked')?.value||0)/2; 7 }else{ 8 answer.value=Number(document.querySelector('[name=b]:checked')?.value||0); 9 } 10 }); 11 }); 12}); 13</script> 14<label><input type="radio" name="a" value="100">100</label> 15<label><input type="radio" name="a" value="200">200</label> 16<label><input type="radio" name="a" value="300">300</label><br> 17<label><input type="radio" name="b" value="1000">1000</label> 18<label><input type="radio" name="b" value="2000">2000</label> 19<input type="text" id="answer">

aを選ぶとbが半額に修正

投稿2021/09/13 01:04

編集2021/09/13 08:40
yambejp

総合スコア114775

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

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

J_aoi

2021/09/13 08:08

文章が分かりにくくて申し訳ございません。 ラジオグループAの項目を選択していた場合、ラジオグループBの数値を半額にする 例:果物(グループA)を買っている場合、かご(グループB)を1000円(50%off)で購入できる ということです
yambejp

2021/09/13 08:40

修正してみました。 こういうことでしょうか?
J_aoi

2021/09/13 09:12

```JavaScript var group2 = document.getElementsByName("group2"); for(i=0; i<group2.length; i2++){ if(group2[i].checked ){ p2 = group2[i].value; break; } } ``` ここで分類するのは不可能なのでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問