みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

配列の使い方

JavaScript 初心者です。

下記ソースでinput type="text"でname="kazu1,name="kazu2"のように2個限定で使っているのですが将来的にDBから読んだ数分に変わる予定です。
その場合
eval(document.myForm.kazu1.value)+ の表現はどのように変えたらいいでしょうか。
配列の数はi7で持ってきています。


<script language="JavaScript"><!--
function ttlValue(i7){
goukei = eval(document.myForm.kazu1.value)+eval(document.myForm.kazu2.value);


alert("sum "+goukei+"です");

}
// --></script>
</head>


<table border=1>
<tr>
<td width="40%" ><input type="text" name="kazu1" value="10">%</td>
<td width="40%" ><input type="text" name="kazu2" value="10">%</td>
</tr>
<tr>
<td><input type="submit" name="button" value="keisan" onClick="ttlValue(2)" ></td>
<td></td>
</tr>
</table>
</form>

投稿日時 - 2009-01-28 17:02:13

QNo.4668659

困ってます

質問者が選んだベストアンサー

ああ、やっぱり
nameは"kazu"+数字でいいのですよね?

<script>
function ttlValue(f){
var goukei=0;
for(var i=0;i<f.length;i++){
if(f[i].type=="text" && f[i].name.match(/^kazu[0-9]+$/)) goukei +=parseFloat(f[i].value);
}
alert("sum "+goukei+"です");
}
</script>

<form>
<input type="text" name="kazu1" value="10">%</td>
<input type="text" name="kazu2" value="10">%</td>
<input type="text" name="kazu3" value="10">%</td>
<input type="text" name="kazu4" value="10">%</td>
<input type="text" name="kazu5" value="10">%</td>
<input type="submit" name="button" value="keisan" onClick="ttlValue(this.form)" >
</form>

投稿日時 - 2009-01-28 17:51:33

お礼

うまくなりました。
ありがとうございました。

投稿日時 - 2009-01-28 18:12:04

ANo.2

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

textを足しこんでいくならformの要素を総ざらいすればよいでしょう。

nameをチェックする必要があるなら、ちょっと工夫が必要ですね
<script>
function ttlValue(f){
var goukei=0;
for(var i=0;i<f.length;i++){
if(f[i].type=="text") goukei +=parseFloat(f[i].value);
}
alert("sum "+goukei+"です");
}
</script>

<form>
<input type="text" name="kazu1" value="10">%</td>
<input type="text" name="kazu2" value="10">%</td>
<input type="text" name="kazu3" value="10">%</td>
<input type="text" name="kazu4" value="10">%</td>
<input type="text" name="kazu5" value="10">%</td>
<input type="submit" name="button" value="keisan" onClick="ttlValue(this.form)" >
</form>

投稿日時 - 2009-01-28 17:12:04

補足

説明たりずにすみません。
input type="text"は計算の対象以外にもたくさんあるので
name="kazu"で始まる分だけ持ってこないといけません。

投稿日時 - 2009-01-28 17:19:30

あなたにオススメの質問