• ベストアンサー

繰り返し処理で記述したいのです。

初心者です。 JavaScriptの基本的な事だと思うのですが 教えてください。 form1.condition1.length = 3; form1.condition2.length = 3; form1.condition3.length = 3; form1.condition4.length = 3; form1.condition5.length = 3; の部分をFor文などの繰り返し処理を使って 記述したいのですが、どのように記述すれば いいのですか? よろしくお願いします。

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

  • ベストアンサー
  • EUR
  • ベストアンサー率61% (29/47)
回答No.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)等に変更したほうがいいかもしれません。

rabu_chihaha
質問者

お礼

ありがとうございます。 追記の部分も大変参考になりました。 ブラウザによっても違うのですね

その他の回答 (3)

  • Chaire
  • ベストアンサー率60% (79/130)
回答No.3

var i = 1; var I = 5; while (i < I) document.forms['form1'].elements['condition' + (i++)].length = 3; 処理系に依存する省略記法は避けた方が無難です(ご提示の例文では、どれが何のオブジェクトなのか分からなくなってしまっている)。

rabu_chihaha
質問者

お礼

ありがとうございます。 No.4さんの追記の部分を見て、Chaireさんの 書いてくださった意味がわかりました。m(_ _;)m

noname#25358
noname#25358
回答No.2

 えとですね。 for ( i = 1; i <= 5; i++ ) { eval("form1.condition"+i+".length") = 3; }  こんな感じですかね。  eval() は、その内部の文字列をソースコードとして実行するコマンドです。

rabu_chihaha
質問者

お礼

ありがとうございます。 このようにも記述できるのですね。 勉強になりました。

  • EUR
  • ベストアンサー率61% (29/47)
回答No.1

for (i = 1; i <= 5; i++) {   document.form1("condition" + i).length = 3; } とすればいけます。

rabu_chihaha
質問者

補足

ありがとうございます。 できました。 で、ここでまた質問なのですが、 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];  } } の記述では間違っているのでしょうか?

関連するQ&A

専門家に質問してみよう