プロが教えるわが家の防犯対策術!

色々、既出のログをみたのですがいまいちよくわからないことがあったので質問させてもらいます。当方htmlの知識はほどほどにありますがjsやフォームはあまりよくわかりません。またcgiではなくjsを使いたいと思っています。部分的には既出のものとかぶることもあるのですが、詳細をどのように設定していいかなどもわからなかったもので…宜しくお願いします。

■まず下記の計算をしたいと思っています。

(1)【個数】×【商品レンタル期間】+【送料】×=Web上に表示される金額
(2)【個数】×【商品レンタル期間】+【送料】×【消費税】=上記の下に金額

(1)と(2)は縦列もしくは並列に表記するつもりです。
例えば、500円(税込525円)みたいな感じで

・【個数】は、プルダウンで選択させるようにするつもりです。
・【商品レンタル期間】は
1泊2日、2泊3日、3泊4日の中からプルダウンで選択させるようにするつもりです。ここを
・【送料】は、固定です。
ただ、送料は3種類あって、小中大と分けたいです。
例えばこんな感じでできるとありがたいです。
表示部分には「送料」としか表示されずに、
soryo1と指定すれば100円
soryo2と指定すれば200円
soryo3と指定すれば300円
となるようにしたいです。
ただ、この送料の部分は固定ですのでプルダウン選択はなしです。

■javascriptはJQueryなどのライブラリはなしでできるだけしたいです。
またjavascript自体は、外部からのリンクにするつもりです。

■【商品レンタル期間】のところについて

基準となる金額が1泊2日200円の場合に
2泊3日は1泊2日の1.2倍
3泊4日は1泊2日の1.4倍
という風に、基準となる1泊2日の金額から自動計算したいです。

ながながと書いたあげく、説明が下手で申し訳ありませんが
どなたかわかりやすく教えていただけるとありがたいです。
宜しくお願いいたします。

A 回答 (2件)

どこまでできているのか不明ですが、勉強なさってください。


HTMLもscriptも提示されていないので、とりあえず、ごくプリミティブな参考例です。(単価100の設定で、計算結果を表示)

1)プルダウンに対応させたらどうなるか?
2)文字を入力するとエラー表示(NaN)になるけど、回避するには?
3)計算の途中で条件判断したり、分岐するには?
などなど、いろいろありますので調べてみてください。
(適当に検索しても、結構情報は見つかるはずです)

質問文で一番疑問なのは、入力して計算結果を表示した後、どうするつもりなのかですねぇ。(javascriptだけだと、後はどうしようもないけど…)

<html>
<script type="text/javascript">
function calc() {
var tanka = 100;
var kazu = atai('kazu');
var kikan = atai('kikan');
var soryo = atai('soryo');
var result = tanka*kazu*kikan + soryo;
document.getElementById('result').innerHTML = result + '円';
}
function atai(eId){
return parseInt(document.getElementById(eId).value);
}
</script>
<body>
<p>個 数:<input type="text" id="kazu">
<br>期 間:<input type="text" id="kikan">
<br>送 料:<input type="text" id="soryo">
<p><input type="button" value=" 計算 " onclick="calc()">
<p>
<div style="width:400px;border:1px solid gray;padding:8px;">
【個数】×【レンタル期間】+【送料】=<span id="result"></span>
</div>
</body>
</html>

この回答への補足

>入力して計算結果を表示した後、どうするつもりなのかですねぇ。

なるほど…
そりゃそうです。説明不足で申し訳ないです…

計算結果を出したものをつかってレンタル用のカートに
反映させるつもりです。

いまのところ、プルダウンで
【個数】と【レンタル期間】を別々に入力し、
レンタル用のカートのボタンをクリックすることでphpで反映させてます。

ただ、phpは自分でつくったものではなく、別の人がつくったものなので
どうやって反映させているのかはわからないです。

補足日時:2009/02/04 22:34
    • good
    • 0

ちょっと長いですが…。


メモ帳にでも貼り付けて、HTMLファイルで保存して下さい。
あくまで自動計算のみです。

------------------------------------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML lang="ja">
<HEAD>
<TITLE>質問番号4688991</TITLE>
<STYLE TYPE="text/css">
<!--
.noborder {border-width:0pt; border-style:none;}
-->
</STYLE>
<SCRIPT language="JavaScript" type="text/javascript">
<!--

// 送料選択
function SelectCarriage()
{
// 送料選択リストの値を取得する
var selectedIndex = document.getElementById('selection').value;

// 値に応じて送料変更を実行
if (selectedIndex == 1)
{
ChangeCarriage(100);
}
if (selectedIndex == 2)
{
ChangeCarriage(200);
}
if (selectedIndex == 3)
{
ChangeCarriage(300);
}
}

// 送料変更
function ChangeCarriage(amount)
{
// 金額表示エリアを取得する
var carriage = document.getElementsByName('carriage');

// 金額表示エリアの個数分ループ
for (i = 0; i < carriage.length; i++)
{
// 金額表示エリアの金額を変更する
carriage[i].value = amount;

// 料金計算
CalcAmount(i);
}
}

// 料金計算
function CalcAmount(index)
{
// 個数リストの値を取得する
var count = document.getElementsByName('count')[index].value;
// 商品レンタル期間リストの値を取得する
var term = document.getElementsByName('term')[index].value;
// 送料の値を取得する
var carriage = document.getElementsByName('carriage')[index].value;
// 金額表示エリアを取得する
var total = document.getElementsByName('total')[index];
// 税込表示エリアを取得する
var taxin = document.getElementsByName('taxin')[index];

// 個数かレンタル期間が選ばれていない場合
if (count == 0 || term == 0)
{
// 金額と税込を0に設定する
total.value = 0;
taxin.value = 0;
return;
}

// レンタル期間の倍率
var rate = 1;

// 2泊3日なら1.2倍とする
if (term == 2)
{
rate = 1.2;
}
// 3泊4日なら1.4倍とする
if (term == 3)
{
rate = 1.4;
}

// 金額を計算する
var amount = eval(500 * count * rate + "+" + carriage);

// 表示エリアに金額・税込をセットする
total.value = amount;
taxin.value = eval(amount * 1.05);
}
-->
</script>
</HEAD>
<BODY ONLOAD="SelectCarriage();">

<TABLE BORDER="1">
<TR>
<TD BGCOLOR="LIGHTPINK">送料選択</TD>
<TD>
<SELECT ID="selection"
onchange="SelectCarriage();">
<OPTION VALUE="1">送料1</OPTION>
<OPTION VALUE="2">送料2</OPTION>
<OPTION VALUE="3">送料3</OPTION>
</SELECT>
</TD>
</TR>
</TABLE>

<TABLE BORDER="1">
<TR>
<TD BGCOLOR="LIGHTBLUE">個数</TD>
<TD BGCOLOR="LIGHTBLUE">商品レンタル期間</TD>
<TD BGCOLOR="LIGHTGREY">送料</TD>
<TD BGCOLOR="LIGHTGREY">金額</TD>
<TD BGCOLOR="LIGHTGREY">税込</TD>
</TR>

<TR>
<TD>
<SELECT NAME="count"
onchange="CalcAmount(0);">
<OPTION VALUE="0"></OPTION>
<OPTION VALUE="1">1</OPTION>
<OPTION VALUE="2">2</OPTION>
<OPTION VALUE="3">3</OPTION>
<OPTION VALUE="4">4</OPTION>
<OPTION VALUE="5">5</OPTION>
</SELECT>
</TD>
<TD>
<SELECT NAME="term"
onchange="CalcAmount(0);">
<OPTION VALUE="0"></OPTION>
<OPTION VALUE="1">1泊2日</OPTION>
<OPTION VALUE="2">2泊3日</OPTION>
<OPTION VALUE="3">3泊4日</OPTION>
</SELECT>
</TD>
<TD>
\<INPUT TYPE="TEXT" ID="carriage" CLASS="noborder" VALUE="0" READONLY>
</TD>
<TD>
\<INPUT TYPE="TEXT" NAME="total" CLASS="noborder" VALUE="0" READONLY>
</TD>
<TD>
\<INPUT TYPE="TEXT" NAME="taxin" CLASS="noborder" VALUE="0" READONLY>
</TD>
</TR>

<TR>
<TD>
<SELECT NAME="count"
onchange="CalcAmount(1);">
<OPTION VALUE="0"></OPTION>
<OPTION VALUE="1">1</OPTION>
<OPTION VALUE="2">2</OPTION>
<OPTION VALUE="3">3</OPTION>
<OPTION VALUE="4">4</OPTION>
<OPTION VALUE="5">5</OPTION>
</SELECT>
</TD>
<TD>
<SELECT NAME="term"
onchange="CalcAmount(1);">
<OPTION VALUE="0"></OPTION>
<OPTION VALUE="1">1泊2日</OPTION>
<OPTION VALUE="2">2泊3日</OPTION>
<OPTION VALUE="3">3泊4日</OPTION>
</SELECT>
</TD>
<TD>
\<INPUT TYPE="TEXT" NAME="carriage" CLASS="noborder" VALUE="0" READONLY>
</TD>
<TD>
\<INPUT TYPE="TEXT" NAME="total" CLASS="noborder" VALUE="0" READONLY>
</TD>
<TD>
\<INPUT TYPE="TEXT" NAME="taxin" CLASS="noborder" VALUE="0" READONLY>
</TD>
</TR>

</TABLE>
<BR>
商品単価は500円です。<BR>
送料1を選択すると送料が100円になります。<BR>
送料2を選択すると送料が200円になります。<BR>
送料3を選択すると送料が300円になります。<BR>
個数or商品レンタル期間を選択時に金額計算を行います。<BR>
個数or商品レンタル期間が未入力の場合、金額は0円になります。<BR>
金額は商品単価×個数×レンタル期間倍率+送料です。<BR>
1泊2日のレンタル期間倍率は1.0です。<BR>
2泊3日のレンタル期間倍率は1.2です。<BR>
3泊4日のレンタル期間倍率は1.4です。<BR>
税込金額は金額×税率(1.05固定)です。<BR>
送料選択時には再計算を行います。<BR>
</BODY>
</HTML>

この回答への補足

大変、親切にソースを書いていただき恐縮です。
下記内容を補足させていただきます。

まず、せっかく教えていただいて申し訳ないのですが

<TABLE BORDER="1">
<TR>
<TD BGCOLOR="LIGHTPINK">送料選択</TD>
<TD>
<SELECT ID="selection"
onchange="SelectCarriage();">
<OPTION VALUE="1">送料1</OPTION>
<OPTION VALUE="2">送料2</OPTION>
<OPTION VALUE="3">送料3</OPTION>
</SELECT>
</TD>
</TR>
</TABLE>

の部分で、送料は選択ではなくソースを書く際に選択できるように
したいです。ユーザー側で選択するのではなく自動計算の式の中に組み込めないかなぁという意味です。

説明不足で申し訳ありません…


また、初歩的なことかもわからないのですがtableをつかわなくても大丈夫ですか?

下記回答にも補足したのですが、自動計算後、PHPで制作したカートへその自動計算後の料金を転送したいのです。
現在のものは、
【個数】と【レンタル期間】を別々にプルダウンで選択して、カートボタンを押すとphpへジャンプします。レンタル期間に料金は含まれるようになっています。
例えば

【2個】【1泊2日\100】と選択するとような感じです。
カートへは

1泊2日  2個  200円
-----------------------------
合計:200円

というような画面になります。

説明不足で申し訳ありませんが教えてください…

補足日時:2009/02/04 23:16
    • good
    • 0

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