プロが教える店舗&オフィスのセキュリティ対策術

ホームページ用見積もりフォーム

商品の値段を合計する。

一個ずつ足しての計算で処理してるのですが、商品がかなりの数になりそうです。
エクセルのSUMのように商品1から商品1000までを計算する関数を教えていただきたいと思っています。

JavaScriptは外部参照しています。

以下がJavaScriptのコードになります。


function keisan(){

// 設定開始

var tax = 5; // 消費税率

// 商品1
var price1 = document.form1.goods1.options[document.form1.goods1.selectedIndex].value;

// 商品2
var price2 = document.form1.goods2.options[document.form1.goods2.selectedIndex].value;

// 商品3
var price3 = document.form1.goods3.options[document.form1.goods3.selectedIndex].value;


// 合計を計算
var total1 = parseInt(price1) + parseInt(price2) + parseInt(price3);

// 設定終了


document.form1.field_total1.value = editNumberSeparated(total1); // 合計を表示

var tax2 = Math.round((total1 * tax) / 100);
document.form1.field_tax.value = editNumberSeparated(tax2); // 消費税を表示

document.form1.field_total2.value = editNumberSeparated(total1 + tax2); // 税込合計を表示

A 回答 (1件)

>エクセルのSUMのように商品1から商品1000までを計算する関数を教えていただきたい


残念ながら、SUMのような関数は用意されていないので、自分で作ることになります。
合計する値の要素に規則性があるでしょうから、それを利用してループで処理をするのが良いのではないでしょうか。
 http://www.atmarkit.co.jp/ait/articles/1007/28/n …
 http://www.site-cooler.com/kwl/jslibrary/7.htm

同じループ処理にするにしても、いくつか考え方があると思います。
例えば、
1)form1内の要素を順に見ていって、名前がgoodsで始まるセレクト要素の値を集計する。
2)1~1000までの変数iについて、form1内の名前がgoods + iの要素の値を集計する。
3)form1内のselect要素で、defaultのoption以外が選ばれているものだけを集計する。
などなど…

ご提示の情報だけからではどのような考え方が最適なのかはわかりかねますが、ご質問分でご提示のコードは2)の考え方に近いと思います。
ただし、2)の場合は商品の数が変わる度にコードを修正しなければならないですし、番号が飛んでいたらエラーになるなどが予想されますので、1)や3)の考え方を取り入れて商品の数や番号が変わっても動作するような考え方で算出するようにしておくほうがよいのではないかと想像します。

それで、できたものを
 function SUM(formName){ ~~ }
のようにしておけば、指定form内の集計をしてくれる、SUM関数ができたことになります。
    • good
    • 0
この回答へのお礼

fujillinさん。こんばんは。

丁寧なアドバイスをありがとうございます。
まだまだ初心者なので、時間が掛かるかと思いますが、頑張っていきます!!
ありがとうございます。

お礼日時:2013/06/14 19:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!