• 締切済み

複数の配列から、項目数にあわせてプルダウンへ表示

お世話様です。 まったくの初心者です。 function todofukenSet(){ //オプションタグを連続して書き換える for ( i=1; i<74; i++ ){ //選択した都道府県によって分岐 switch (document.selbox.todofuken.selectedIndex){ case 0: document.selbox.kuchoson.options[i].text="";break; case 1: document.selbox.kuchoson.options[i].text=tokyo_todofuken[i];break; case 2: document.selbox.kuchoson.options[i].text=kanagawa_todofuken[i];break; case 3: document.selbox.kuchoson.options[i].text=chiba_todofuken[i];break; case 4: document.selbox.kuchoson.options[i].text=saitama_todofuken[i];break; case 5: document.selbox.kuchoson.options[i].text=ibaraki_todofuken[i];break; case 6: document.selbox.kuchoson.options[i].text=tochigi_todofuken[i];break; case 7: document.selbox.kuchoson.options[i].text=gunnma_todofuken[i];break; case 8: document.selbox.kuchoson.options[i].text=yamanashi_todofuken[i];break; case 9: document.selbox.kuchoson.options[i].text=nagano_todofuken[i];break; case 10: document.selbox.kuchoson.options[i].text=shizuoka_todofuken[i];break; } } 抜粋になってしまいますが、 以上の文で、フォームにある<select>の<option>項目を、複数の配列へ分岐させて表示しています。 ですが、配列の項目数が違うため、74より少ない項目に関しては、 「undefined」と表示されてしまいます。 i<74; の部分を、「配列ごとの数を読みとって、その数ごとに表示」 という指示にするには、どのように記述すれば良いでしょうか。 ご教授ください。 何卒よろしくおねがいいたします。

みんなの回答

  • Ogre7077
  • ベストアンサー率65% (170/258)
回答No.1

動作確認していませんが、この記述でいかがですか function todofukenSet(){ var pref = document.selbox.todofuken.selectedIndex; var opts = document.selbox.kuchoson.options; var citiesList = [ [], // 後の処理を簡単にするためのダミー情報 tokyo_todofuken, kanagawa_todofuken, chiba_todofuken, /*以下略*/ ]; var cities = citiesList[pref]; for (var i=0; i<cities.length; i++) opts[i].text = cities[i]; for (var i=cities.length; i<74; i++) opts[i].text = ""; }

mamedaifuku0722
質問者

お礼

おお。 ありがとうございます!undifinedが消えました! さっそくのご回答、ありがとうございます! たすかりました!

関連するQ&A