CGI-BBS > JAVA/JavaScript > JavaScript > ループ処理での文字結合


カレッヂ
カレッヂ


質問者 ひろ  投稿日 7/26(木) 16:19:43
はじめまして、ひろと申します。
ご存知の方、教えていただきたいと思い、投稿しました。

<script language="JavaScript">
<!--
function test1(){
        if(form1.text1.value == "なし"){
                alert("空っぽ");
        }
        if(form1.text2.value == "なし"){
                alert("空っぽ");
        }
        if(form1.text3.value == "なし"){
                alert("空っぽ");
        }
        if(form1.text4.value == "なし"){
                alert("空っぽ");
        }
}
-->
</script>

<form name="form1">
        <input type="text" name="text1" value="てすと"><BR>
        <input type="text" name="text2" value="てすと"><BR>
        <input type="text" name="text3" value="なし"><BR>
        <input type="text" name="text4" value="てすと"><BR>
</form>

上記の様に、同じ様な条件式を何度も書かずに、
ループで処理したいと考えています。

そこで、
for(i=1;i<5;i++){
        if("form1.text" + i + ".value" == ""){
                alert("空っぽ");
        }
}

上記のようにすると、条件式の中で、form1.text1のvalue値ではなく、
「form1.text1.value」という文字列で評価されてしまい、
「form1.text1.value」と「なし」との比較になってしまいます。
この様に、単純に文字列を結合しただけではダメなのでしょうか?
これを回避する方法をご存知の方はいらっしゃいますでしょうか?
回答者 しあわせのツボ  [削除]  投稿日 7/26(木) 17:33:22
・括弧で括る。
・evalをかける。
・2文に分ける。
といったあたりでしょうか。
質問者 ひろ  [削除]  投稿日 7/27(金) 09:50:39
ひろです。
教えていただいたとおり、

for(i=1;i<5;i++){
        if(eval("form1.text" + i + ".value" == "")){
                alert("空っぽ");
        }
}
とやったらでできました。

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

このページは終了したので返信(回答)は書きこめません

Web裏技