前提・実現したいこと
クレジットカードの残高が
検証値とし、
total1、total2、total3の値は
購入したい商品の金額とします。
検証値に対し、上回った数値と
下回った数値で購入できる商品の場合、
購入できない商品の場合で処理を分けています。
Xの値(price)に対し、
price = 13,000 (検証値)
I. 数値を超えないもの (sum_under)
II. 数値を超えたもの (sum_over)
※()内は変数名
3回の真偽判定し、
どちらの場合も値1を返します。
I.とII.でそれぞれ合計値を
変数宣言で計算する。
/* priceの値以下の合計 */
**sum_under = parseInt(a)+parseInt(b)+parseInt(c); **
/* priceの値以上の合計 */
**sum_OK = parseInt(aOK)+parseInt(bOK)+parseInt(cOK); **
それぞれParseIntで整数に直して合計する。
最終処理としては、
priceを下回った数値が出力された回数1をかける
priceを上回った数値が出力された回数1.5をかける
となるので以下の宣言を実行。
// priceの値以下および値以上の合計を2つのboxの計算式に代入 //
var boxA,boxB;
/* boxに入れる計算式 */
boxA = sum_under*1;
boxB = sum_over*1.5;
priceの値以下の場合は1を乗算。
priceの値以上の場合は1.5を乗算。
/* boxに入れた合計値を出力*/
** document.HIKAKU.boxA.value = boxA; **
** document.HIKAKU.boxB.value = boxB; **
※記述で抜かっていた、
document.HIKAKUの記述を加えたらboxに入れた合計値が
テーブル内に出力されました。
変数の宣言の多さが気になりますが、
実現したいことはこれで達成しました…
お手数おかけしてすみません。
該当のソースコード
HTML
1 2 <form name="HIKAKU"> 3 <table border="1" style="width:100%;padding:10px;font-size:15px;text-align:center"> 4 <tr> 5 <th>加算される前の値</th> 6 <th>加算後の数値</th> 7 <th>X以下の値の場合に1をCOUNT</th> 8 <th>X以上の値の場合に1をCOUNT</th></tr> 9 10 <!-- 加算される前の数値/加算数値/X以下の値/X以上の値 --> 11 12 <tr><td align="center"><output type="number" name="total1" value=""></output></td> 13 <td align="center"><output type="number" name="count1" value=""></output></td> 14 <td align="center"><output type="number" name="count1_under" value=""></output></td> 15 <td align="center"><output type="number" name="count1_over" value=""></output></td></tr> 16 17 18 <tr><td align="center"><output type="number" name="total2" value=""></output></td> 19 <td align="center"><output type="number" name="count2" value=""></output></td> 20 <td align="center"><output type="number" name="count2_under" value=""></output></td> 21 <td align="center"><output type="number" name="count2_over" value=""></output></td></tr> 22 23 24 <tr><td align="center"><output type="number" name="total3" value=""></output></td> 25 <td align="center"><output type="number" name="count3" value=""></output></td> 26 <td align="center"><output type="number" name="count3_under" value=""></output></td> 27 <td align="center"><output type="number" name="count3_over" value=""></output></td></tr></table> 28 29 30 <p align="center"><input type="button" value="比較する" onClick="PRICE_HIKAKU()" style="width:100%;padding:10px;font-size:20px;text-align:center"></p> 31 32 33 <table border="1" style="width:100%;padding:10px;font-size:15px;text-align:center"> 34 <tr><th>X以下の回数をCOUNT</th> 35 <th>X以上の回数をCOUNT</th></tr> 36 37 <tr><td><output type="number" name="sum_under" value="" id="num1"></output></td> 38 <td><output type="number" name="sum_OK" value="" id="num2"></output></td></tr></table> 39 40 41 <table border="1" style="width:100%;padding:10px;font-size:15px;text-align:center"> 42 <tr><th>X以下の回数を代入(1を乗算)</th> 43 <th>X以上の回数を代入 (1.5を乗算)</th></tr> 44 45 46 <tr><td><output type="number" name="boxA" value=""></output></td> 47 <td><output type="number" name="boxB" value=""></output></td></tr></table> 48 </form>
Javascript
1 2 3**・動作再現テストページ (2020年6月13日更新)** 4****http://wwwc.pikara.ne.jp/atalanta-system/test/teratai_test.html** 5 6以下はJavascriptの記述内容です。 7 8// priceとの比較宣言 // 9 10function PRICE_HIKAKU(){ 11 12var price,total1,total2,total3; 13 14/* 加算されていく値の元になる変数*/ 15 16total1 =3000; 17total2 =5000; 18total3 =12000; 19 20price = parseInt(document.HIKAKU.price.value); //プライス値 // 21 22 23 if (price >= count1){ 24 25 a = "1"; 26 aOK = "0"; 27 28 document.HIKAKU.count1_under.value = a; 29 document.HIKAKU.count1_over.value = aOK; 30 31 }else if(price <= count1){ 32 33 a = "0"; 34 aOK = "1"; 35 36 document.HIKAKU.count1_under.value = a; 37 document.HIKAKU.count1_over.value = aOK; 38 39 40} 41 42 if (price >= count2){ 43 44 b = "1"; 45 bOK = "0"; 46 47 document.HIKAKU.count2_under.value = b; 48 document.HIKAKU.count2_over.value = bOK; 49 50 }else if(price <= count2){ 51 52 b = "0"; 53 bOK = "1"; 54 55 document.HIKAKU.count2_under.value = b; 56 document.HIKAKU.count2_over.value = bOK; 57 58} 59 60 if (price >= count3){ 61 62 c = "1"; 63 cOK ="0"; 64 65 document.HIKAKU.count3_under.value = c; 66 document.HIKAKU.count3_over.value = cOK; 67 68 69 }else if(price <= count3){ 70 71 c = "0"; 72 cOK = "1"; 73 74 document.HIKAKU.count3_under.value = c; 75 document.HIKAKU.count3_over.value = cOK; 76} 77 78 79 80// X以下の回数とX以上の回数 合計値を出力する定義 // 81 82var sum_under,sum_OK; 83 84 sum_under = parseInt(a)+parseInt(b)+parseInt(c); /* priceの値以下の合計 */ 85 sum_OK = parseInt(aOK)+parseInt(bOK)+parseInt(cOK); /* priceの値以上の合計 */ 86 87 88/* 合計値を出力*/ 89 90document.HIKAKU.sum_under.value = sum_under; 91document.HIKAKU.sum_OK.value = sum_OK; 92 93 94// X以下のCOUNT数およびX以上のCOUNT数の合計値を計算式に代入 // 95 96var boxA,boxB; 97 98boxA = parseInt(sum_under)*1; 99boxB = parseInt(sum_OK)*1.5; 100 101/* 合計値を出力*/ 102 103document.HIKAKU.boxA.value = boxA; 104document.HIKAKU.boxB.value = boxB; 105 106 107
試したこと
処理としては実現したいことになりました。
total4,5,6というように
購入したい商品の処理が増えた場合は、
変数a,b,cに加えてd,e,fというように
追加で変数を記述してif文を追加する
必要があるのかなと思っています。
すごく長くなりそうなので
簡略化で書く方法などあるでしょうか。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー