• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:「option」の追加におけるselectedの指定での動作は?)

「option」の追加におけるselectedの指定での動作は?

このQ&Aのポイント
  • 「option」の追加において、selectedを指定した場合の動作について質問です。
  • ドロップダウンに当日の日付をselected属性で指定したいが、当月が選択されるとスクリプトが停止してしまう。
  • alert()を外すと想定した動作が行われないが、selectedを指定する行を外すと当日の日付が選択されない。何が原因なのかわからない。

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

  • ベストアンサー
noname#18558
noname#18558
回答No.1

推測ですが、DOM操作だと非同期でオブジェクトが完全に生成される前に選択処理をしようとするのでエラーになるのではないでしょうか。 alertを入れることによって、DOM生成を待つので遅延で正しい動作になるものと思われます。 optionを生成するのには、Optionオブジェクトをつくるやり方もあるので、そちらでやってみてはどうでしょうか。 サンプル乗せておきます。 ついでに、月に合わせた日にちを設定するようにしてます。 function appendTest( frmParts1, frmParts2, frmParts3 ) { if ( !document.createElement ) return; var strDate = new Date(); strDate.setMonth(1); for ( ii = 1; ii < 13; ii++) { document.info_inp.elements[frmParts2].options[0]; document.info_inp.elements[frmParts2].options[ii-1] = new Option(ii,ii); } document.info_inp.elements[frmParts2].options[strDate.getMonth()].selected = true; var wkDate = new Date(); wkDate.setMonth( strDate.getMonth() + 1 ); wkDate.setDate( 1 ); wkDate.setTime( wkDate.getTime() - 24*60*60*1000 ); for ( ii = 1; ii < wkDate.getDate()+1; ii++ ) { document.info_inp.elements[frmParts3].options[0]; document.info_inp.elements[frmParts3].options[ii-1] = new Option(ii,ii); } document.info_inp.elements[frmParts3].options[strDate.getDate()-1].selected = true; }

komorebi99
質問者

お礼

DQ9様 回答大変ありがとうございました。 おかげさまで目的のドロップダウンボックスを作成することができました。 DOMによる遅延とは全く考えもしませんでした。勉強になりました。

関連するQ&A