• ベストアンサー

New OPTIONで作った<Select>の<optgroup>の設定

お世話になります。 動的に<Select>を作成したく、new option で<option>を作成しておりますが、 このnew option で作成した<option>を<optgroup>にする方法がわかりません。 教えてください、宜しくお願いします。

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

  • ベストアンサー
  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.2

なんだかlinesとかいきなり出てくるし、どういうscriptかわかりませんが、 var oSelect = document.getElementById('select_bbb'); oSelect.removeChild(oSelect.firstChild); これをfunction aaaの最初に入れれば削除してから追加する事になるかと思います。

その他の回答 (1)

  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.1

new optionで作る、というのが具体的にどういうコードで作っているかわかりませんが、 optgroupとoptionは別種のエレメントですから、作ったものを変化させる事はできません。 http://www.doraneko.org/misc/dom10/19981001/level-one-html.html#ID-94282980 createElementとかでoptgroupを作ってはどうでしょうか。 http://www.doraneko.org/misc/dom10/19981001/level-one-core.html#method-createElement

javaphp
質問者

補足

お世話になります。 コードは以下です。 <script type="text/javascript"> function aaa(){ var oGroup = document.createElement('optgroup'); oGroup.label = "▼選択"; for(i=0; i<lines.length; i++) { if(lines[i] == '') { break; } var parts = lines[i].split(","); var kamokusyubetu_code = parts[0]; var kamokusyubetu_name = parts[1]; var j=i+1; var oOption = document.createElement('option'); oOption.value = code; oOption.innerHTML = name; oGroup.appendChild(oOption); } var oSelect = document.getElementById('select_bbb'); oSelect.appendChild(oGroup); } </script> <select name='select_aaa' id='select_aaa' onchange='aaa()'> </select> <select name='select_bbb' id='select_bbb'> </select> 上記にて、 select_aaaをonchangeする事によって、 select_bbbが動的に変わるセレクトボックスwith optgroupを作成できましたが、 select_aaaをonchangeする度に、select_bbbにoptionが追加されてしまいます。 一度removeして追加したいのですが、 oSelect.removeChild(oGroup); を実行するとエラーになります。 なぜでしょうか??ここを教えてください。 宜しくお願いします。

関連するQ&A

  • selectの選択不可など

    いつもお世話になっております。 ちょっと悩んでいるのですが、プルダウンで特定の項目だけ選択不可にする事は可能でしょうか? HTMLだけで実現したいのですがうまくいきません。過去ログを見ましたがjavascriptは使用したくないのです。 なにか方法はございますでしょうか? また、とりあえず下記のソースで行っているのですが、(やりたいことは果物・野菜を選択不可にしたい) label部分がbold斜体になってしまってなんだか汚いのです。 この部分のスタイルを調整するにはどうすればいいのでしょうか?どこにやっても果物・野菜のスタイルが変わりません。 <select size="10" name="a[]" muliple> <optgroup label="果物"> <option>りんご</option> <option>みかん</option> </optgroup> <optgroup label="野菜"> <option>キャベツ</option> <option>きゅうり</option> </optgroup> </select> ご存知の方がいらっしゃいましたらおおしえいただければ幸いです。

    • ベストアンサー
    • HTML
  • 【HTML5】selectにrequierd

    HTML5でformのグループ化されたselectを必須にしたいと思い、 下記のようにrequiredを記述しました。 <select name="sample[]" required> <option value="">--</option> <optgroup label="カテゴリA"> <option value="1">選択肢1</option> <option value="2">選択肢2</option> </optgroup> <optgroup label="カテゴリB"> <option value="3">選択肢3</option> </optgroup> </select> そうすると、選択肢1を選択していても「必須項目です」と表示され、フォームが送信できません。 valueの値が1だと選択済として扱われないのでしょうか。 optgroupをなくすと選択肢1を選択した状態で送信できました。 valueの値は1で送信したいのですが、可能でしょうか。

  • <SELECT>の<option value="#">で#にリンクされるような形でcsv2tableをつかってcsvテーブルを出したい

    説明がうまくできないのですが 通常、option valueの値を下記のように <select id="pref" name="pref" class="selectable"> <optgroup label="海の魚"> <option value="001.html">真鯛</option> <option value="002.html">ガシラ</option>     </optgroup>     <optgroup label="川の魚"> <option value="003.html">鮎</option> <option value="004.html">鯉</option>     </optgroup> </select> となっている場合、真鯛を選択すると001.htmlにジャンプしますよね。 こういうのの応用で、↓ここのように http://allabout.co.jp/internet/javascript/closeup/CU20080229A/index2.htm csvから表を呼び出して表示するようにしたいのですが、具体的にどのようにすればよいでしょうか? 上記サイトでは <input>タグで呼び出すようにしていますので、物理的に不可能な場合は最終<input>タグでもいいかなと思っているのですが、情報が多いためできればインターフェースをすっきりさせたい面もあって<select>メニューから選択し、それが反映されるようにしたいのですが、どのようにすればよいでしょうか? 当方、htmlとcssの知識は多少ありますが、jsやajaxの知識はあまりありませんので、できるだけ詳しく教えていただけるとありがたいです。 ajaxを使用する場合、ライブラリはJquery1.3を使用していますので かち合わないようにお願いします。 イメージ的には、下記のようなものが作りたいです。 このままだと動かないですけど・・・イメージとして・・・ <select id="pref" name="pref" class="selectable"> <optgroup label="海の魚"> <option value="         $('#fish').csv2table('001.csv',{ select : [0,1,2] });"       >真鯛</option> <option value="         $('#fish').csv2table('001.csv',{ select : [0,3,4] });"      ">ガシラ</option>     </optgroup>     <optgroup label="川の魚"> <optgroup label="海の魚"> <option value="         $('#fish').csv2table('002.csv',{ select : [0,1,2] });"       >鮎</option> <option value="         $('#fish').csv2table('002.csv',{ select : [0,3,4] });"      ">鯉</option>     </optgroup> </select> <div id="fish"></div> イメージとしては、プルダウンで真鯛を選択すると、<div id="fish">●●</div>ここに、001.csvの0列・1列・2列目が吐き出され、またプルダウンから鯉を選択すると、002.csvの0列・3列・4列目が吐き出しなおされるというようなイメージです。

  • select optionのことで聞きたいことが

    <select name="" id="" style="height:30px;line-height:30px;"> <option value="" id="item-1">あああ</option> <option value="" id="item-2">あ</option> <option value="" id="item-3">ああ</option> </select> optionの高さを広げて、さらに▼の位置を変えず、セレクトボックス内の文字位置をセレクトボックス内の縦の真ん中に持っていきたいと思っています。 現実的ではないのは分かっていますが、どうにかクロスブラウザに対応した方法があれば 教えてください。 ずっと悩んでいるのですが、答えが出ず教えてほしいです。 html cssでページはデザインしています。

    • ベストアンサー
    • CSS
  • select や option のCSS設定

    select や option をCSSで IEでもFxでも表示する方法ありますか? また、option が 1~~~10とかニ桁の場合、右寄せ数字は可能ですか 例、 1 2 ~~~ 10 を  1  2 ~~~ 10

    • ベストアンサー
    • CSS
  • <SELECT>内<OPTION>の内容を曜日で変えるには?

    <FORM name="BGM"> <SELECT name="change"> <OPTION selected>選曲♪</OPTION> <OPTION value="○○○.mid">曲1</OPTION> <OPTION value="○○○.mid">曲2</OPTION> <OPTION value="○○○.mid ">曲3</OPTION> <OPTION value="○○○.mid ">曲4</OPTION> </SELECT>  <INPUT onclick="bgm_change()" type="button"> </FORM> 今、このような形で、<SELECT>を使ってBGMを4曲から選べる機能を成功させています。 この、<SELECT>の<OPTION>のプルダウンの内容を、 曜日ごとで変えたいと思っています。 今日の曜日を取得するJavascriptは、 Function WhatDayWeek() と言う名の関数で、     Week = new Array(7); DATE = new Date(); thisweek = Week[DATE.getDay()]; 以上のように作っていますが、 このJavascriptと、<SELECT><OPTION>をくっ付ける(反映させる)にはどう記述すればよいでしょうか? 関数自体、この3行では足りないんでしょうか・・。 どなたかご教授下さい。

    • ベストアンサー
    • HTML
  • optionsのオブジェクトからselectを

    optionのオブジェクトからselectのオブジェクトを取得するJavaScriptを教えてください。 最近のブラウザのみの方法でもよいです。 GetParentみたいなものを探しています。

  • SELECT OPTIONの中身をコピペしたい

    <select> <option value="1">膨大な文字列1</option> <option value="2">膨大な文字列2</option> </select> みたいな、SELECT OPTIONがあって その中に膨大な文字列(OPTION)があるんですが、 それを、別の場所に文字だけコピーペーストしたいのですが ブラウザ上だとできません。 ソースを直接コピペするのでは、一個一個必要な部分だけ 取り出さなければならず大変手間がかかります。 目の前にテキストがあるのに、コピーペーストできず もどかしい状態です。 SELECT OPTIONの文字列が取り出すうまい方法があれば アドバイスお願いします。

    • ベストアンサー
    • HTML
  • selectのoptionを条件によって変更する方

    セレクトボックスの表示位置が画面の真ん中より上ならば、uekaraの中身をselectのoptionに追加。 真ん中より下ならば、sitakaraの中身をselectのoptionに追加というコードを作りたく、下記のように途中まで書きました。 もしよろしければ、続きを教えていただけると嬉しいです。 ============================================================ <form name="form"> <select name="select_sort" onmouseover=“hantei( )”> <option value="">場所によって中身が変わるよ</option> </select> </form> <script type="text/javascript" language="JavaScript"> <!-- var uekara = new Array(“上から”,”上1”,”上2”,”上3”); var sitakara = new Array("下から”,”下1”,”下2”,”下3”); function hantei ( ) if(セレクトボックスの表示位置が半分より上ならば ) createSelection( form.elements['select_sort'], "(場所によって名前が変わるよ)", uekara, uekara); 違うならば createSelection( form.elements['select_sort'], "(場所によって名前が変わるよ)", sitakara, sitakara); </select>

  • Operaでselect要素のoption設定が変です。

    こんにちは,よろしくお願いします。 IEやFirefoxでは意図したとおりに表示されるのに,Operaで表示したときだけ,よけいな空白のoptionが表示されて困っています。 (ソースの表示をしても,空の<option></option>が入っているというわけではありません。何も無いようなのですが,下向き▼をクリックすると空白の選択肢が挿入されています。) 下のようにselect要素に時刻のoptionを設定しました。 document.getElementById("ji")がselect要素です。 var start = new Date(2000,1,1,8,0); var end = new Date(2000,1,1,16,0); var zzz = new Date(); zzz.setTime(start.getTime() + (15 * 60 *1000)); for(i=0; i< 24-zzz.getHours(); i++){  if(i + zzz.getHours() < 10){   document.getElementById("ji").options[i] = new Option("午前 " + (i + zzz.getHours()) , (i + zzz.getHours()) + "");  }else if(i + zzz.getHours() < 12){   document.getElementById("ji").options[i] = new Option("午前" + (i + zzz.getHours()) , (i + zzz.getHours()) + "");  }else if(i + zzz.getHours() >= 12 && i + zzz.getHours() < 22){   document.getElementById("ji").options[i] = new Option("午後 " + (i + zzz.getHours() - 12) , (i + zzz.getHours()) + "");  }else if(i + zzz.getHours() >= 22){   document.getElementById("ji").options[i] = new Option("午後" + (i + zzz.getHours() - 12) , (i + zzz.getHours()) + "");  } } ここまでは,問題なく表示されます。ここで問題なのは,次のように,selectedの設定をしようとするとよけいな空白optionが挿入されます。 for(i=0; i<24; i++){  if(end.getHours() == parseInt(document.getElementById("ji").options[i].value)){  document.getElementById("end_ji").options[i].selected = true;  break;  } } そこで, document.getElementById("end_ji").options[i].selected = true;の行の前に,次のようなalert文を挿入すると, alert("i = " + i + " optval = " + parseInt(document.getElementById("ji").options[i].value) + " end = " + end.getHours()); なぜか,無駄な空白の選択肢が消えて,きちんと表示されました。 Operaが,「 options[i].selected 」の仕様で,IEやFirefoxと違う点があるのでしょうか? いったい何が原因なのでしょうか?よろしく御指導ください。お願いします。

専門家に質問してみよう