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

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

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

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

HTML

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

Q&A

解決済

1回答

756閲覧

条件の真偽結果を判定毎にカウント変数へ出力する方法

atlana

総合スコア0

JavaScript

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

HTML

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

0グッド

0クリップ

投稿2020/06/11 11:21

編集2020/06/13 10:00

前提・実現したいこと

クレジットカードの残高が
検証値とし、
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**・動作再現テストページ (2020613日更新)** 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/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

takasima20

2020/06/11 11:35

x が出てくる経緯を説明に追加するといいんじゃないかなあ。
kei344

2020/06/11 11:42

(質問文は編集できます)質問文コードの最終行の次の行に「```」を入れればコードブロックになります。また、問題が再現するHTML/JavaScript全体を提示することを強くお勧めします。
takasima20

2020/06/12 10:52

よくわかりませんが… x を total1 なり total2 なりで割った結果を切り上げるなり切り下げるなりしちゃだめなのかな?
atlana

2020/06/13 06:55 編集

分かりづらくてすみません…。 シンプルにソースコードを書き直しました。
kei344

2020/06/13 07:38

関数が切れています。また、「別の計算」が記載されていません。「document.HIKAKU」は提示のコードの中では定義されていないので、提示のコードだけではエラーになります。 最終的にどういう項目があって、何をどう計算したいかを提示いただけませんか?
atlana

2020/06/13 10:05

何度も訂正してしまい、申し訳有りません。 別の計算式の開示と関数の定義を見直しして 改めて直しました。 処理としては出力したい数値が出力されるようになりましたが、 コードの書き方がすごく雑な感じがしておりまして、 簡略化できるでしょうか。
kei344

2020/06/13 11:29

質問自体があまりに変わってしまい、現在の質問文を読むと「特に問題が無い」となっています。質問が「受付中」になっていますが、いったんご自身の回答をもって「解決済」にされてはいかがでしょうか。(質問後に自己解決することは良くあることです) 【質問をした後に自己解決してしまった --- ヘルプ|teratail(テラテイル)】 https://teratail.com/help#resolve-myself > 後から読む人のためにも、具体的な解決手順を記載してください。
atlana

2020/06/13 12:03

承知いたしました。 折角、コメント頂いておりましたのに 自己解決してしまい、申し訳ありませんでした。 また機会がありましたら宜しくお願いいたします。
guest

回答1

0

自己解決

Javascript

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_under1;
boxB = sum_over
1.5;

priceの値以下の場合は1を乗算。 priceの値以上の場合は1.5を乗算。

/* boxに入れた合計値を出力*/

document.HIKAKU.boxA.value = boxA;

document.HIKAKU.boxB.value = boxB;

投稿2020/06/13 11:56

atlana

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問