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

複数のテキストボックスの値、取得に関して質問させて下さい。

画面に20個のテキストボックスが存在し、
それぞれ id に txt0 ~ txt19を設定しています。
(javascriptにてループで作ってます)

for(ii=0; ii<20; ii++){
(略)
document.write("<input id='txt" + ii + "' type='text' />");
(略)
}


登録ボタン押下後に、上記20個のテキストボックスの値を取得し、
特定の文字だった場合のみ処理を行います。
この処理もループで行いたいのですが、
変数名 txt'i'.value  の 'i'の部分だけを変更したいのです。(iは 0~19)

変数名の一部を変数にすることは可能でしょうか?
配列にできれば話は簡単なのですが・・・配列にできるでしょうか?


with (document.form1) {
for(ii=0; ii<20; ii++){
(略)
tempTxt = txt0.value; ←右辺の値をiiの値と共に txt0.value から txt19.value に変化させたい。
(略)            ("txt" + ii + ".value" では文字列になってしまい・・)
if(tempTxt == "ABC"){
(略)
}
}
}


別の手段でもかまわないのですが、何かよい方法が
ありましたら、ご回答お願いします。

A 回答 (1件)

なるほど、変数名に変数を使いたいわけですね。


2種類方法があります。

ひとつは、eval 関数を使うやり方です。
eval 関数は、文字列を引数に持ち、その文字列をコードとして評価します。
きちんと返り値も持ちます。

tempTxt = eval('txt' + ii + '.value');

こんな感じです。

もうひとつは、オブジェクトの別なアクセスの仕方を使うやり方です。
formオブジェクトの中のinputは、

document.FORM_NAME.INPUT_NAME

というアクセスの仕方が一般的ですが、他にも

document.FORM_NAME.elements[INPUT_NAME]

としてもアクセスできます。
なので、下のようにすればうまくいくはずです。

tempTxt = elements['txt' + ii].value;
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございました!
無事、目的の動作を行わせることができました。

eval関数、elements ともに知らなかったため、
まだまだ勉強不足と検索不足を痛感しました。

お礼日時:2008/12/18 10:46

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