JavaScriptでセレクトボックスの"selected"を動的につける方法

このQ&Aのポイント
  • JavaScriptを使用して、セレクトボックスの選択肢に"selected"を動的に付ける方法について質問します。
  • 具体的には、年、月、日の選択肢を持つセレクトボックスを作成し、現在の日付に対応する選択肢に"selected"を付ける方法を知りたいです。
  • JavaScriptを活用して、セレクトボックスの"selected"属性を制御できる方法を教えてください。
回答を見る
  • ベストアンサー

javascriptでセレクトボックスの"selected"を動的につ

javascriptでセレクトボックスの"selected"を動的につける方法について質問させてください。 現在、以下のようなフォームを作成しました。 <select name='year'> <option value='2010'>2010</option> <option value='2011'>2011</option> </select>年 <select name='month'> <option value='1'>1</option> <option value='2'>2</option> <option value='3'>3</option> <option value='4'>4</option> <option value='5'>5</option> <option value='6'>6</option> <option value='7'>7</option> <option value='8'>8</option> <option value='9'>9</option> <option value='10'>10</option> <option value='11'>11</option> <option value='12'>12</option> </select>月 <select name='day'> <option value='1'>1</option> <option value='2'>2</option> <option value='3'>3</option> <option value='4'>4</option> <option value='5'>5</option> <option value='6'>6</option> <option value='7'>7</option> <option value='8'>8</option> <option value='9'>9</option> <option value='10'>10</option> <option value='11'>11</option> <option value='12'>12</option> <option value='13'>13</option> <option value='14'>14</option> <option value='15'>15</option> <option value='16'>16</option> <option value='17'>17</option> <option value='18'>18</option> <option value='19'>19</option> <option value='20'>20</option> <option value='21'>21</option> <option value='22'>22</option> <option value='23'>23</option> <option value='24'>24</option> <option value='25'>25</option> <option value='26'>26</option> <option value='27'>27</option> <option value='28'>28</option> <option value='29'>29</option> <option value='30'>30</option> <option value='31'>31</option> </select>日 このセレクトボックスに、例えば今日の日付"2010年9月30日"だったら、それぞれの年、月、日の<option>に"selected"をつけたいのですが、javascriptではどのようにして実現したら良いのでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

こんな感じで・・・ <script> window.onload=function(){ var f=document.getElementById("f0"); var ymd=new Date(); checkSelect(f.elements["year"],ymd.getFullYear()); checkSelect(f.elements["month"],ymd.getMonth() +1); checkSelect(f.elements["day"],ymd.getDate()); } function checkSelect(obj,val){ for(var i=0;i<obj.length;i++){ if(obj[i].value==val){ obj[i].selected=true; break; } } } </script> <form id="f0"> <div> <select name='year'> <option value='2009'>2009</option> <option value='2010'>2010</option> <option value='2011'>2011</option> </select>年 <select name='month'> <option value='8'>8</option> <option value='9'>9</option> <option value='10'>10</option> </select>月 <select name='day'> <option value='29'>29</option> <option value='30'>30</option> <option value='31'>31</option> </select>日 </div> </form>

yuri805
質問者

お礼

具体的なソースまでいただいてありがとうございます。 大変参考になりました。

その他の回答 (2)

  • yamada_g
  • ベストアンサー率68% (258/374)
回答No.2

optionのselectedにtrueを設定すれば選択状態になります。 たとえば、 <script type="text/javascript"> window.onload = function() {  var today = new Date();  var year = today.getYear();  var month = today.getMonth();  var day = today.getDate();  selectOption(document.フォーム名.year, year);  selectOption(document.フォーム名.month, month+1);  selectOption(document.フォーム名.day, day); }; function selectOption(obj, value) {  for (var i = 0, len = obj.length; i < len; i++) {   if (obj[i].value == value) {    obj[i].selected = true;    return;   }  } } </script> とか。

yuri805
質問者

お礼

ご回答ありがとうございました。 無事に解決することができました。

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.1

<script type="text/javascript"> <!-- window.onload = function(){ var today = new Date(); var year = today.getFullYear(); var month = today.getMonth()+1; var day = today.getDate(); var options=document.getElementsByTagName("option"); for(var i=0;i<options.length;i++){ if(options[i].text==year) options[i].selected="selected"; if(options[i].text==month) options[i].selected="selected"; if(options[i].text==day) options[i].selected="selected"; } } // --> </script>

yuri805
質問者

お礼

ありがとうございました。 無事に解決することができました。

関連するQ&A

  • リストボックスに動的な初期設定値(selected)を与えたい(質問長文)

    以下のようなリストボックスで、今日の日付データから「(1年前の)year」と「(今月の)month」の初期設定値を与えようと思うのですが、スマートな方法が思いつきません。 どなたかよい方法を教えてください・・・ <form name="test"> <select name="year"> <option>1997 ・・・(中略) <option>2005</select> 年 <select name="month"> <option value="01">1 ・・・(中略) <option value="12">12</select> 月 </form> <script language="JavaScript"> <!-- function initial(){ 【ここにどのように書くか】 } initial(); //--> </script>

  • 日付のセレクトボックスで0付きの日付にしたい

    ネットで探した式を張り付ける位しかできない超初心者です。 以下のような当日表示の日付のセレクトボックス を探してペーストしたのですが1や2を01、02と表示しません。 これをどうやって直せば01,02,03,04,05と0付きの表示のセレクトボックスに 直せるでしょうか? どうぞよろしくお願いいたします。 <? $time = time(); $year = date("Y", $time); $month = date("n", $time); $day = date("j", $time); print("<select name=\"ayear\">"); //年は修正してください for( $i = 2010; $i <= 2020; $i++ ){ if( $i == $year ){ print("<option value=\"$i\" selected>$i</option>"); }else{ print("<option value=\"$i\">$i</option>"); } } print("</select>年"); print("<select name=\"amonth\">"); for( $j = 1; $j <= 12; $j++ ){ if( $j == $month ){ print("<option value=\"$j\" selected>$j</option>"); }else{ print("<option value=\"$j\">$j</option>"); } } print("</select>月"); print("<select name=\"aday\">"); for( $k = 1; $k <=31 ; $k++ ){ if( $k == $day ){ print("<option value=\"$k\" selected>$k</option>"); }else{ print("<option value=\"$k\">$k</option>"); } } print("</select>日"); ?>

    • ベストアンサー
    • PHP
  • javascriptでセレクトボックスを動的に

    javascriptでセレクトボックスの"selected"を動的に変更する方法を教えてください>< 下記のselectedを"10"から"50"に変更したいのですが、 某ASPサービスの環境下での作業のため制約があり直接変更できません。 <body onload="event"> <select name="select"> <option value="10" selected="selected">10件</option> <option value="30">30件</option> <option value="50">50件</option> </select> そこで、JavaScriptで何とかしようと思うのですが、 <select>~ </select>の間(selectタグ含む)は、ASPサービスの制約でIDやclassを入れることもできず、 変更できるのは、body開始タグ部分、headerタグ内、body内(一部)です。 ページを読み込んだ際に、「50件を選択」、「10件からselected外す」状態にしたいです。 いろいろサイトを見てなんとなくできそうな気はするのですが、 スキル的に初心者レベルのため、わかりませんでした。 何卒よろしくお願いします!

  • 複数のセレクトボックスを1つにまとめて受け渡すには

    現在"年"と"月"のセレクトボックスがあり下記のように受け渡されています <form action="./search.php" method="GET">  <select name="year">   <option value="2010">2010年</option>   <option value="2011">2011年</option>  </select>  <select name="month">   <option value="1">1月</option>   <option value="2">2月</option>   <option value="3">3月</option>      ・   <option value="12">12月</option>  </select>  <input type="submit" value="検索"> </form> 受け取り側 http://www.###.jp/search.php?year=2011&month=11 となっています。 これを dateに一まとめにして受け取りたいですが http://www.###.jp/search.php?date=201111(2011-11でも可) 選択するプログラム側の修正方法を教えて欲しいのですが。 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • 自動的に日付が変るセレクトボックス

    コストを算出するcgiに条件を送信する、下のようなhtmlのフォームを機能アップする方法が解らずに困っています。 -------------------------- 納品形態1 数量[1]  [2004年] [1月] [1日] [単品]  [算出] 納品形態2 数量[1] [2004年] [1月] [1日] [単品] [算出] 納品形態3 数量[1] [2004年] [1月] [1日] [単品] [算出] -------------------------- 2004年か2005年、1月~12月、1日~31日、単品かロットか、数量をそれぞれセレクトボックスで選択するようにしてあるのですが、 ページを開いた時に選ばれている数値は当然「selected」で指定して NAME="tanni" VALUE="0" SIZE="2"><BR> 納品日 <SELECT NAME="nouhin1"> <OPTION VALUE="2004" SELECTED>2004年 <OPTION VALUE="2005">2005年 </SELECT><SELECT NAME="nouhin2"> <OPTION VALUE="1" SELECTED>1月 <OPTION VALUE="2">2月 … という形になっているので、同じく当然ですが、いつアクセスしても2004年1月1日が選ばれています。 これを、いつアクセスしても今日の日付の5日後の日付がselectedになるようにしたいのですが、方法はあるでしょうか? 「Javascript組めば?」と知人に言われましたが、私は既存のソースの設定値や文字列を打ち変えるくらいしか出来ません。 どこかで、このような目的に合致するスクリプトを配付して下さるサイトはないでしょうか? もしくは、どなたか、ソースを教えて頂けないでしょうか? どうかよろしくお願い致します。

    • ベストアンサー
    • HTML
  • セレクトボックスの選択項目を変える

    セレクトボックスの選択項目を変えるには どうすればいいですか? <FORM action=./ method=post> <SELECT name=server> <OPTION value=2 selected>2</OPTION> <OPTION value=3>3</OPTION> <OPTION value=4>4</OPTION> </SELECT> </FORM> こういうフォーム(FORMやOPTIONにnameがない)で [4]を選択したいです このフォームを書き換えないで(スクリプトでの書き換えなら○) どうにか変えることはできないでしょうか? IEのみの対応でいいので、お願いします

  • <select> selectedについて

    ある動的検索結果用ページから下記のファイルが、読み込まれその結果ページ上部に、 地域で絞り込むセレクトプルダウンが表示されます。 その結果ページのセレクトプルダウンの地域を再度選択しまして、結果が返された時に、 選択した地域名をセレクトプルダウンに表示させたいのですが、上手く動かず地域で絞るが 毎回表示されます。 <サンプル> <script type="text/javascript"><!-- function navi(value){ navi_option = document.getElementById("cityId").getElementsByTagName('option'); for(i = 0; i < navi_option.length; i++){ if(navi_option[i].value == value){ navi_option[i].selected = true; document.searchForm.cityId.options[i].selected= true; break; } } } // --></script> <select name="cityId" id="cityId" onClick="navi(value);"> <option value="0" >- 地域で絞る -</option> <option value="169">池袋東口</option> <option value="170">池袋西口</option> <option value="85" >大塚・巣鴨</option> <option value="131">赤羽</option> <option value="164">田端・王子</option> ・ ・ ・ ・ ・ </select> -略- javascriptの部分をどのように実装すれば良いでしょうか? javascriptは、初心者なので、ご教授願えれば幸いです。 宜しくお願い致します。

  • セレクトボックスで指定した任意のCGIにPOSTしたい

    フォームでリクエストを送信する際、セレクトボックスで指定した任意のCGIにPOSTしたいのです JavaScriptで実現したいのですが...教えてくださいm(__)m 下記はフォームの中身です。 <form action="" method="post"> <input type="text" name="key_word"> <select name="S1"> <option selected value="error">CATEGORY <option value="search_1.cgi">SELECT_1 <option value="search_2.cgi">SELECT_2</option> </select> <input type="hidden" value="kw_search" name="mode"> <input type="submit" value="検索"></td> </form>

  • 読み込む外部スクリプトをセレクトボックスを使って選べないでしょうか?

    お世話になります。 フォーム内に配置した、1から5までの数字を選べるセレクトボックスを使って、そのフォーム内に読み込む.jsファイルを選択することは出来ないでしょうか? 外部ファイルには、UsualSet.js、EmergencySet.js、PauseSet.jsなどがあって、そのスクリプトファイルの中身は document.write("<input name=\"youbi\" type=\"hidden\" value=\"土曜\"><input name=\"codenumber\" type=\"hidden\" value=\"732\"><input name=\"busho\" type=\"hidden\" value=\"経理\">"); とかいった感じになっています。 つまり、セレクトボックスで何番を選ぶかによって、CGIに渡す値を$youbiと$codenumberと$bushoとの3つ全ていっぺんに変更出来るようにしたい訳です。 しかし、そのセレクトボックスにどういう仕掛けをしたら良いかわからなくて困っています。 まさか、 <FORM ACTION="pro.cgi" METHOD="POST">  <select name="kazu">   <option value="<script language="javascript" src="UsualSet.js>" selected>1</option>   <option value="<script language="javascript" src="EmergencySet.js>" >2</option>   <option value="<script language="javascript" src="PauseSet.js>" >3</option>   <option value="<script language="javascript" src="MorningSet.js>" >4</option>   <option value="<script language="javascript" src="FulleSet.js>" >5</option>  </select>   <input type="hidden" name="kaijou" value="22890">  <input type="hidden" name="boxnumber" value="62">  <input type="submit" name="Submit" value="送信"> </FORM> なんてわけに行かないですもんね。 どうしたらいいかおわかりの方がいらっしゃいましたら、どうかよろしくお願い致します。

  • JavaScriptカレンダーの日付をクリックしてselectの値を変えたい

    http://allabout.co.jp/career/javascript/closeup/CU20020529/ こちらのサイトで公開されているJavaScriptを組み込んでいるところです。 (JavaScriptでカレンダーを作り、クリックした値を返すもの) サンプルでは<input type="text">に値を返しているのですが、 私は以下のselectのoptionにそれぞれ反映させたいと思っています。 <select name="year"> <select name="month"> <select name="day"> selectに反映させるために何処をいじっていいのか分からず、困っています。 どなたかアドバイスをいただけたら幸いです。

専門家に質問してみよう