• 締切済み

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

  • 親子連動型のselectを設置し、さらにselectedを設定したい。

    以下のソースのように、親子連動型のselectを作成しています。 ですが、特定の値にselectedを設定するところで行き詰っています。 例えば、 dai_komokuのselectedが大項目2で chu_komokuのselectedが中2-3 というようなかたちです。 このような事は可能なのでしょうか? 可能であれば教えていただければ幸いです。 <script type="text/javascript"> <!-- function changelist(){ var num = document.forms["writeform"].dai_komoku.selectedIndex var obj = document.forms["writeform"].chu_komoku.options obj.length = 0 if(num==0){ obj[obj.length]=new Option("----------------",""); } if(num==1){obj[obj.length]=new Option('中1-1','11') obj[obj.length]=new Option('中1-2','12') }else if(num==2){obj[obj.length]=new Option('中2-1','21') obj[obj.length]=new Option('中2-3','23') } if(obj.selectedIndex==-1)obj.selectedIndex=0 if(document.layers){ window.resizeBy(-10,-10) window.resizeBy(10,10) } } //--> </script> <form method="post" action="hoge.php" name="writeform"> 大項目 <select name="dai_komoku" onchange="changelist()"> <option value="" selected>--選択してください--</option> <option value='1'>大項目1</option> <option value='2'>大項目2</option></select> <br> 中項目 <select name="chu_komoku"></select> </form>

  • 動的セレクトボックスのSelectedについて

    以下のように、動的セレクトボックスを作りました。これ自体は問題なく動くのですが、selectedの指定方法がわかりません。例えば、ページ表示に「東京都」と「中央区」を選択している状態にしたいです。よろしくお願いいたします。 <html> <head> <script type="text/javascript"><!-- function SelectOption(parentValue, text, title, value, style) { this.parentValue = parentValue; this.setOption = function() { this.text = text; this.value = value; this.title = title; if(style) { this.style.cssText = style; } }; return this; } function SelectBox(id) { function getObject() { var obj = document.getElementById(id); if(!obj.options && ( (typeof obj.length) == "number") ) { if(obj.length > 0) { obj = obj[0]; } else { obj = null; } } return obj; } var options = []; this.registOption = function(option) { options[options.length] = option; }; var child = null; this.setChild = function(childObj) { child = childObj; }; this.make = function(parentValue) { var obj = getObject(); if(obj) { obj.options.length = 0; var opt = (parentValue != null) ? [] : options; if(parentValue != null) { for(var i = 0; i < options.length; i++) { if( (options[i].parentValue == null) || (options[i].parentValue == parentValue) ) { opt[opt.length] = options[i]; } } } obj.options.length = opt.length; for(var i = 0; i < opt.length; i++) { opt[i].setOption.call(obj.options[i]); } if(child) { child.make(obj.value); } } }; return this; } var box1 = new SelectBox("sb1"); box1.registOption(new SelectOption(null, "都道府県", "", "0", "color:gray;")); box1.registOption(new SelectOption(null, "東京都" , "都道府県", "1")); box1.registOption(new SelectOption(null, "神奈川県", "都道府県", "2")); var box2 = new SelectBox("sb2"); box2.registOption(new SelectOption(null, "区市町村", "", "0", "color:gray;")); box2.registOption(new SelectOption("1" , "千代田区", "区市町村", "1")); box2.registOption(new SelectOption("1" , "中央区" , "区市町村", "2")); box1.setChild(box2); window.onload = function() { box2.make("1"); }; //--></script> </head> <body> <form> <select id="sb1" onchange="box2.make(this.value);"></select> <select id="sb2"></select> </select> </form> </body> </html>

  • プルダウンメニュー日付生成で月の変わり目について

    初心者です。 質問集をいろいろ探して日付生成できたのですが月末、月初がうまくいきません。 イヌでも・・やトホホ・・など探してますがマッチする情報が見つからないのでわかったら教えて下さい。 100にち分を表示するようにしてます。 このソースは短くてシンプルなので気に入ってます、 ======================================== <SCRIPT type="text/javascript"> window.onload = function() { var d, str, elm = document.getElementById('gdate'); var day = new Date(); day.setMilliseconds(24*60*60*1000); for (d=1; d<100; d++) { str = (day.getMonth() + 1) + '/' + (day.getDate() -1); elm.options[d] = new Option(str, str); day.setMilliseconds(24*60*60*1000); } } </SCRIPT><SELECT name="HIDUKE" id="gdate"> <OPTION>日付選択</OPTION> </SELECT> ======================================== あまり複雑にしないで解決する方法ありますか。

  • セレクトメニューに応じたdivタグの内容

    javascriptの質問です。フォーム内のセレクトメニューに応じて表示する配列を選び、複数のdivタグ内に表示したいと思っています。getElementByIdでセレクトメニューにIdをつけて呼び出し、selectedIndexでfunction()をonloadという事ですすめています。 複数のdivタグ内に書き出すのにinnerHTMLを使うんだなというところまでは理解しているつもりですが、上手く動きませんので、どなたかご存知の方にご教授願えればと思います。 <html> <head> <script type="text/javascript"> window.onLoad = function(){ document.getElementById("selected").onChange = function(){ var planTitle = this.selectedIndex; var object = document.getElementById("derection"); var TextData = [[],["text","text"],["text","text"]]; for (var i=0; i<TextData[planTitle].length; i++){ document.write(TextData[i]); } } } </script> </head> <body> <form action=""> <select id="selected"> <option value="title01">title01</option> <option value="title02">title02</option> <option value="title03">title03</option> </select> <div id="direction"></div> <div id="direction"></div> </form> </body> </html>

  • 2つのプルダウンを連動させて、selectedで選択状態にしたい

    JavaScript初心者です。 今、phpとMySQLとJavaScriptで車の情報を登録する画面を作っています。 1つのプルダウンが選択後、もうひとつのプルダウンを表示するのですが、 入力画面から確認画面へ移って、history.backでもう一度入力画面にもどったときに、 選択された状態で表示したいのです。 下記のmakerは、値をセッションで受け取り、selectedをつける指示を したので、 選択状態にすることができました。 もう一つのcarnameがどうしたらよいか分かりません。 どうかご教授お願い致します。 <head> <script type="text/javascript"> <!-- var area=0; function setArea(n) { area=n; carnameItem = [ //トヨタ ['カローラ','クラウン','セルシオ'], //ニッサン ['シーマ','エルグランド','ローレル'], len = document.form1.carname.options.length; for (i=len-1; i>0; --i)document.form1.carname.options[i] = null; if(n!=0){ document.form1.carname.style.visibility = "visible"; for (i=0; i<carnameItem[n-1].length; i++)document.form1.carname.options[i+1] = new Option(carnameItem[n-1][i]); } setPref(0); } //--> </script> </head> <body> <form name="form1"> <select name="maker" onChange="setArea(this.selectedIndex)"> <option value="0"<?php echo $selected1?>>▼選択してください</option> <option value="1"<?php echo $selected1?>>トヨタ</option> <option value="2"<?php echo $selected2?>>ニッサン</option> </select> <select name="carname" onChange="setPref(this.selectedIndex)"><option value="0" selected>▼選択してください</option></select> </form>

  • <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は、初心者なので、ご教授願えれば幸いです。 宜しくお願い致します。

  • 連動セレクトボックスを同一ページにもう一つ追加したい

    今回質問させていただきたいのは同一ページ内に連動するセレクトリストを二つ付けたいのですが上手く起動してくれません。 説明下手ですみません・・ 例えばですけど htmlには、 <html> <head> <title>あ</title> <script type="text/javascript"> <!-- // --> </script> <script type="text/javascript"> <!-- window.onload=function (){ for(var i=0; i<data.length; i++){ document.FORM1.MENUA.options[i] = new Option(data[i][0],data[i][0]); } setSubMenu(0); }; function setSubMenu(no){ document.FORM1.MENUB.length=0; for(var i=1; i<data[no].length; i++){ document.FORM1.MENUB.options[i-1] = new Option(data[no][i].key,data[no][i].value); } } // --> </script> </head> <body> <form name="FORM1"> <select name="MENUA" onchange="setSubMenu(this.selectedIndex)"> </select> <br> <select name="MENUB" > </select> </form> </body> </html> 外部ファイルに data = [ // [メイン分類,サブ分類並び,…], ["北海道", {key:"函館市",value:"02_11"}, {key:"小樽市",value:"02_12"}, {key:"その他市町村",value:"02_099"}], ["青森", {key:"青森市",value:"03_01"}, {key:"弘前市",value:"03_02"}, {key:"その他市町村",value:"03_099"}], ["岩手県", {key:"盛岡市 ",value:"04_01"}, {key:"宮古市",value:"04_02"}, {key:"その他市町村",value:"04_099"}], ["宮城県", {key:"石巻市",value:"05_06"}, {key:"塩竈市",value:"05_07"}, {key:"その他市町村",value:"05_099"}] ]; この他にもう一つ別窓で <script type="text/javascript"> <!-- // --> </script> <script type="text/javascript"> <!-- window.onload=function (){ for(var i=0; i<data.length; i++){ document.FORM2.MENUC.options[i] = new Option(data[i][0],data[i][0]); } setSubMenu(0); }; function setSubMenu(no){ document.FORM2.MENUD.length=0; for(var i=1; i<data[no].length; i++){ document.FORM2.MENUD.options[i-1] = new Option(data[no][i].key,data[no][i].value); } } // --> </script> </head> <body> <form name="FORM2"> <select name="MENUC" onchange="setSubMenu(this.selectedIndex)"> </select> <br> <select name="MENUD" > </select> </form> </body> </html> 外部ファイルに data = [ // [メイン分類,サブ分類並び,…], ["プログラミング", {key:"HTML",value:"11_01"}, {key:"JavaScript",value:"11_02"}, {key:"その他市",value:"11_099"}], ["データベース", {key:"Oracle",value:"12_01"}, {key:"MySQL",value:"12_02"}, {key:"その他市",value:"12_099"}] ]; と書いたセレクトリストをもう一つ追加したいのです。 が何度やっても上手くいきません。

  • select要素のvalueを配列で取得したいです

    select要素のvalueを配列で取得したく、下記のサンプルを動かそうと試みました。 <html> <head></head> <body> <form> <!-- ここに<select name="c1">~<select name="c20">の20個のselectがあるとする --> </form> <input type="button" value="はい" onclick="test(this.form)"> <script type="text/javascript"> function test ( form ) { var values = new Array(); for ( var i=0; i < 20; i ++ ) { var elm = form.elements['c'+i]; values[i] = elm.options[elm.selectedIndex].value; } } </script> </body> </html> このようなサンプルを動かそうとしたのですが、 var elm = form.elements['c'+i];のところの['c'+i]が正しくないようで 「elm is underfind」というエラーが出てしまいます <script> function myForm (form) { var values = new Array(); for ( var i=0; i<20; i++ ) { var elm = form.elements[i]; values[i] = elm.options[elm.selectedIndex].value; document.write(values[i] + "<br />"); } } </script> インデックス名を'c'+iからiにすると取得できるのですが、 ブラウザが読み込みをやめない状態になってしまいます。 select要素のnameはc1から始まりc20と何も換えていません。 何が間違っているのでしょうか。

  • セレクトボックス連動

    過去の質問にありましたソースを参考にセレクトボックスの 連動タイプをphpを絡めて作っています。 DBから取出した menua に入る値を初期値に設定したいのですが うまくいきません。 menua には AAA、BBB、CCCが入ります。 初期値を変えるにはどのようにすればいいのでしょうか。 また、menua以外にもmenubの初期値も変える事が出来るのでしょうか。 以下ソースになります。 <? $menua = "BBB"; ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <script type="text/javascript"> <!-- data = [ ["AAA", {key:"A01",value:101}, {key:"A02",value:102}, {key:"A03",value:103}], ["BBB", {key:"B01",value:201}, {key:"B02",value:202}, {key:"B03",value:203}], ["CCC", {key:"C01",value:301}, {key:"C02",value:302}, {key:"C03",value:303}] ]; // --> </script> <script type="text/javascript"> <!-- window.onload=function (){ for(var i=0; i<data.length; i++){ document.FORM1.menua.options[i] = new Option(data[i][0],data[i][0]); } setSubMenu(0); }; function setSubMenu(no){ document.FORM1.menub.length=0; for(var i=1; i<data[no].length; i++){ document.FORM1.menub.options[i-1] = new Option(data[no][i].key,data[no][i].value); } } // --> </script> </head> <body> <form name="FORM1"> <select name="menua" onchange="setSubMenu(this.selectedIndex)"> </select> <select name="menub" > </select> </form> </body> </html>

  • 今日の日付を自動的にセレクトしたいのですが・・・。

    うまくできません。 どなたか助けていただけないでしょうか? よろしくおねがいします。 今のソースはこんな状態です。 onChange="setDate(this.form);"は4月の時に30日までとかにつかっています。 <!--最初に今日の日付を選択したい--> var date=new Date(); var year = date.getYear(); var year= (year< 2000) ? year+1900 : year; var mon=date.getMonth(); var day=date.getDate(); alert(mon); function setNow(form){ for(var i = 0;i<document.nanngatu.nanngatu.options.length;i++){ if(document.nanngatu.nanngatu.options[i].text==mon){ document.nanngatu.nanngatu.options.selectedIndex=i; break; } } } --間は省略-- <onLoad="setNow(this.form)" > <form name="nanngatu"> <select name="nanngatu" onChange="setDate(this.form);" > <option value="32">1</option> <option value="30">2</option> <option value="32">3</option> <option value="31">4</option> <option value="32">5</option> <option value="31">6</option> <option value="32">7</option> <option value="31">8</option> <option value="32">9</option> <option value="31">10</option> <option value="32">11</option> <option value="31">12</option> </select>月