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

初めて質問させて頂きます。
form 内で同じname名を付けられたテキストフィールドの値の合計を計算し、その値に定数を乗じた値を表示させたいのですが、出来ずに困っております。
name名を別にすれば簡単に出来そうなのですが、このinputが別CGIからの受け取りの関係で数が不定で同一nameが付いてしまいます。(inputは1個以上で上限は無し)
CGI側を書き換える事は自分の技術的に不可能なので、このような質問となりました。

以下は自分なりに試行錯誤の末の拙いソースです。
どなたかお分かりになる方、ご教授を宜しくお願い致します。

<html>
<head>
<script type="text/javascript" src="prototype.js"></script>
<script type="text/javascript">
<!--
function kakunin() {

var sub = Form.getInputs('form1', 'text');
( var subtotal = ~~~; ここに上で得た数字を合計するみたいなものがくるのかなと・・・)
var total = subtotal * 200;

document.form1.field_total.value = total; // 合計を表示

}
// -->
</script>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
</head>
<body>
<form action="" name="form1">
<table>
<tr><td><input name="kazu" type="text" value="2"></td></tr>
<tr><td><input name="kazu" type="text" value="1"></td></tr>
<tr><td><input name="kazu" type="text" value="3"></td></tr>
<tr><td>・・・増えたりします・・・</td></tr>
<tr><td><input type="button" size="8" onclick="kakunin()" value="合計を確認"></td></tr>
<tr><td><input type="text" name="field_total" size="30" value="total"></td></tr>
</table>
</form>
</body>
</html>

A 回答 (4件)

getElementsByNameで同一Nameを持つ要素(配列)が求められます。


var 合計 = 0;
var 要素 = document.getElementsByName("kazu");
for( var i = 0 ; i < 要素.length ; i++ ) {
  var 値 = parseInt(要素[i].value);
  if( !isNaN(値) ) 合計 += 値;
}
同じ名前でボタンとかないですよね?
あるんだったらTypeも見なければなりません。(上記コードには無い)
    • good
    • 0
この回答へのお礼

nda23様、ご厚意有難う御座います。^^

SAYAKA様の回答と発想は同じという事でしょうか・・・?
スクリプトも書いて頂いたのですが、
何しろ力不足で・・・^^;
同じ名前のボタンは無いです。

やってみますっ
ε=ε=ε= (;>o<) ・・・

お礼日時:2008/05/29 16:50

inputのtypeがtextのものを拾えばよいのでしょ?


nameなんて無視しちゃえばいいじゃない。
ちなみにformにnameつけるのは非推奨なのでやめた方がいいでしょう

<script type="text/javascript">
function kakunin(f) {
var subtotal =0;
for(var i=0;i<f.length;i++){
if(f[i].type=="text" && f[i].value.match(/^\d+$/) ) subtotal+=parseFloat(f[i].value)
}
var total = subtotal * 200;
f.field_total.value = total;

}
</script>
<form>
<table>
<tr><td><input name="kazu" type="text" value="2"></td></tr>
<tr><td><input name="kazu" type="text" value="1"></td></tr>
<tr><td><input name="kazu" type="text" value="3"></td></tr>
<tr><td><input type="button" size="8" onclick="kakunin(this.form)" value="合計を確認"></td></tr>
<tr><td><input type="text" name="field_total" size="30" value="total"></td></tr>
</table>
</form>
    • good
    • 0
この回答へのお礼

yambejp様、ご厚意有難う御座います。^^

完璧です。(^▽^喜)
非推奨等のアドバイスも有難う御座います。
(知らなかったですw^^;)

本チャンに組み込んでみますっ!^^
°゜°゜°。。ヘ(;^^)ノ

お礼日時:2008/05/29 18:10

>その記述がわかりません


残念だけどそれを書いてあげる事はできないよ。
そういう約束になってるからね。

この辺りを見ながら かな。
http://www.tohoho-web.com/js/form.htm
    • good
    • 0
この回答へのお礼

頑張ります^^;

お礼日時:2008/05/29 18:05

nameで引いて合計するんじゃなくて


配列として調べてnameが条件に合致する値だった時に内容を取り出せば良いだけなのでは?
    • good
    • 0
この回答へのお礼

SAYKA様、ご厚意有難う御座います。^^

ですが・・・orz
私の力不足のため、その記述がわかりません・・・(*ノ_<*)
配列・・・をどうやって取得するのでしょうか・・・
申し訳ありません。。。

お礼日時:2008/05/29 16:42

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