- 締切済み
JavaScript初心者です。
JavaScript初心者です。 やりたいことは XX度チェックのようなページを書き換えて 20個の商品名を並べ、チェック数に応じた価格をテキストボックスで表示させたいです。 複数の場合に割引が適用されるため、数式では表せません。 (1個1000円、2個1800円、3個2600円・・・・) さらにオプションでプレゼント用とした場合に500円プラスする という計算です。 近いものはいくつか検索で見つけましたが 単価x個数というものや チェック後に別窓で結果が表示されるものばかりでした。 ほぼ一からになりますが、どなかたご教授いただければ幸いです。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- fujillin
- ベストアンサー率61% (1594/2576)
#1です。 質問者様にはあたりまえのことでも、回答者には書いてないことはわかりません。 >チェックの付いた数を算出。 >その数に応じた割引金額を表示させたいのです。 >計算式は数式では表せませんが、表はあります。 >(2個の時はいくら、10個の時はいくらという感じ) そもそも、商品毎に単価設定はなくてみな同じ単価なの? 同じ商品を複数注文することはないの?(禁止している?) 割引って個数で決まるものなの?商品の組み合わせでかわらないの?(単価が同じならありうるけど) HTMLの見本もないので、文章から読み取れる範囲で… (これ以上は、わからないので無理) <html> <head><title>test</title> <script type="text/javascript"> function calc(f) { var table = [ 0,0,200,400,600,800,1000,1200,1400,1600,1800, 2000,2200,2400,2600,2800,3000,3200,3400,3600,3800 ]; var inp = f.form.getElementsByTagName('input'); var i = 0, e, n = 0, opt, e_k, e_w, e_o; while (e = inp[i++]) { if (e.type == 'checkbox') { if (e.name != 'option') n += e.checked?1:0; else opt = e.checked; } else { if (e.name == 'kosu') e_k = e; else if (e.name == 'waribiki') e_w = e; else if (e.name == 'roption') e_o =e; } } e_k.value = n + '個'; e_w.value = table[n] + '円'; e_o.value = opt?'500円':'なし'; } </script> </head> <body> <form> <input type="checkbox" name="s1">商品1<br> <input type="checkbox" name="s2">商品2<br> <input type="checkbox" name="s3">商品3<br> <input type="checkbox" name="s4">商品4<br> <input type="checkbox" name="s5">商品5<br> <input type="checkbox" name="s6">商品6<br> <input type="checkbox" name="s7">商品7<br> <input type="checkbox" name="s8">商品8<br> <input type="checkbox" name="s9">商品9<br> <input type="checkbox" name="s10">商品10<br> <input type="checkbox" name="s11">商品11<br> <input type="checkbox" name="s12">商品12<br> <input type="checkbox" name="s13">商品13<br> <input type="checkbox" name="s14">商品14<br> <input type="checkbox" name="s15">商品15<br> <input type="checkbox" name="s16">商品16<br> <input type="checkbox" name="s17">商品17<br> <input type="checkbox" name="s18">商品18<br> <input type="checkbox" name="s19">商品19<br> <input type="checkbox" name="s20">商品20<br> <input type="checkbox" name="option">オプション<br> <hr> <input type="button" value="計算" onclick="calc(this)"><br> <label>個数<input type="text" name="kosu" value=""></label> <br> <label>割引<input type="text" name="waribiki" value=""></label> <br> <label>オプション<input type="text" name="roption" value=""></label> </form> </body> </html>
- fujillin
- ベストアンサー率61% (1594/2576)
>複数の場合に割引が適用されるため、数式では表せません 少なくとも計算(又は処理)方法が提示されないと、考えようがありません。(小売店の店長がそのときの駆け引きで値段を決めるようなのは無理) ご提示のサンプル(?)だと >1個1000円、2個1800円、3個2600円・・・・ 単純に2個目からは2割引とかでも当てはまるけれど・・・? まったく計算ロジックがない場合は、表を作っておいて、その表から個数に応じて値段を求めるとかの方法もありますけれど? >オプションでプレゼント用とした場合に500円プラスする 個々の商品についてそれぞれプレゼント用のオプションがあって、商品数に応じて×500円なのか、全体にそのオプションがあって500円プラスか否かの2択なのかが読み取れません。 まずはこのあたりの考え方を明確にするのと、簡略化したHTML部分のサンプルあたりをご提示なされば、どなたかが回答してくれるでしょう。
補足
私の書き方がまずかったですね。 申し訳ありません。 チェックボックス20個(商品名付き)を並べて チェックの付いた数を算出。 その数に応じた割引金額を表示させたいのです。 計算式は数式では表せませんが、表はあります。 (2個の時はいくら、10個の時はいくらという感じ) それとは別にオプションのチェックボックスを1つ表示させて それにチェックが付いていると判断すると商品の個数に関係なく 商品合計金額に500円プラスさせたいです。 JavaScriptは難しいですね。 基本も何もまったくわかっていないので 書き換えぐらいしかできず 応用できません。 あきらめた方がいいのかもしれません。
補足
ありがとうございました! 感動しました。 あとは少し勉強して 価格+オプション500が表示されるようにやってみます。 ちなみに商品は同じ大きさの色違いの小物です。 本当にありがとうございました。