- ベストアンサー
繰り返し処理で記述したいのです。
初心者です。 JavaScriptの基本的な事だと思うのですが 教えてください。 form1.condition1.length = 3; form1.condition2.length = 3; form1.condition3.length = 3; form1.condition4.length = 3; form1.condition5.length = 3; の部分をFor文などの繰り返し処理を使って 記述したいのですが、どのように記述すれば いいのですか? よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
for (j = 1; j <= 5; j++) { document.form1("condition" + j).length = lbnum1; for(i=0; i < lbnum1; i++){ document.form1.("condition" + j).options[i].text = lbdata1[i]; } } に関してですが、 document.form1.("condition" + j)は document.form1("condition" + j)に直してください。 お見受けするにそれ以外は問題はなさそうですが、何かありましたか? 1~5のセレクトボックスにそれぞれlbnum1の個数分オプションを追加しているということですよね? ※追記 No3さんがおっしゃるように、この書き方では閲覧できるブラウザを限定してしまっています。申し訳ございません。 document.form1("condition" + j)のぶぶんを document.forms['form1'].elements['condition' + j]や document.getElementsByName("condition" + j)等に変更したほうがいいかもしれません。
その他の回答 (3)
- Chaire
- ベストアンサー率60% (79/130)
var i = 1; var I = 5; while (i < I) document.forms['form1'].elements['condition' + (i++)].length = 3; 処理系に依存する省略記法は避けた方が無難です(ご提示の例文では、どれが何のオブジェクトなのか分からなくなってしまっている)。
お礼
ありがとうございます。 No.4さんの追記の部分を見て、Chaireさんの 書いてくださった意味がわかりました。m(_ _;)m
えとですね。 for ( i = 1; i <= 5; i++ ) { eval("form1.condition"+i+".length") = 3; } こんな感じですかね。 eval() は、その内部の文字列をソースコードとして実行するコマンドです。
お礼
ありがとうございます。 このようにも記述できるのですね。 勉強になりました。
- EUR
- ベストアンサー率61% (29/47)
for (i = 1; i <= 5; i++) { document.form1("condition" + i).length = 3; } とすればいけます。
補足
ありがとうございます。 できました。 で、ここでまた質問なのですが、 for文の中にfor文って記述できますよね? その場合、 for (j = 1; j <= 5; j++) { document.form1("condition" + j).length = lbnum1; for(i=0; i < lbnum1; i++){ document.form1.("condition" + j).options[i].text = lbdata1[i]; } } の記述では間違っているのでしょうか?
お礼
ありがとうございます。 追記の部分も大変参考になりました。 ブラウザによっても違うのですね