• 締切済み

SELECTの生成でselected設定ができない

全くもって原因がわからず、行き詰まっています。 どなたか助けてください。宜しくお願いします。 <script> window.onload=function(){ var now=new Date(); var nowDay=now.getDate(); var objD=document.FRM.selD; for(i=0; i<31; i++){ d=i+1; objD.options[i] = new Option(d+"日", d); if(d==nowDay){ objD.options[i].selected=true; } } } </script> <form name="FRM"> <select name="selD"></select> </form>

みんなの回答

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

オブジェクト HTMLOptionElement のプロパティ selected に 値 true を設定しても駄目な環境があります。 すべての環境で動かす場合は、値 "selected" を指定するとよいでしょう。 objD.options[i].selected=true; ↓ objD.options[i].selected="selected"; たしかに現在のDOMの定義では boolean 型なので true を入れたいところではありますが、 かつて XHTML を策定するときに決定された方針が 「HTML で値を指定しない属性は、属性名と同じ値を設定すること」 だったので、古い実装では true を除外する現象が起きます。携帯電話とか。 余談ですが、このケースなら window.Option 関数の第四引数で true/false を指定したほうが簡単だと思います。

kaseee
質問者

お礼

こんにちは。回答ありがとうございます。 > objD.options[i].selected="selected"; でもダメでしたが、 スクリプトには問題がないようなので、もう少し自分なりに探ってみます。 XHTML策定や第4引数など貴重なアドバイスまでいただいてありがとうございます。

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.1

こんにちは。 システム日付が選択されていればOKってことですよね。 例えば本日(2013/04/22)であれば22日が選択される。 IE8,Firefox20,chrome26では22日と表示されています。

kaseee
質問者

お礼

こんにちは。確認していただいてありがとうございます。 たしかに意図した通り問題なく表示も動作もするので良いんですが、 他スクリプトとの連動から、今後エラーの芽になりそうな箇所を極力排除したいので もうしばらく試行錯誤して原因や解決策を探ってみます。 お時間を割いていただいてありがとうございます。

関連するQ&A