Selectボックスの要素入力を省略したい

このQ&Aのポイント
  • htmlのセレクトメニューを簡単に作成する方法を教えてください。
  • Javascriptを使用してSelect文を指定した数だけ繰り返すことは可能でしょうか?
  • Selectボックスの要素を動的に生成する方法について教えてください。
回答を見る
  • ベストアンサー

Selectボックスの要素入力を省略したい

こんばんは。 現在htmlとjavascriptを使ってあるプログラムを作っているのですが、質問があります。 htmlのセレクトメニューを作ると、以下の様になると思います。 <select name="example"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> これでは項目数が増える分だけoption文を書かなければならないと思います。 そこで、html文の中でSelect文を使いたい地点に到達したら、Javascriptを呼び出して、option文を指定した数だけ繰り返してくれるようにしたいのです。 例えば呼び出すときに、変数(何項目作るか)を1つもっていく。 持っていった変数が20ならば、option文を <option value="1">1</option> <option value="2">2</option> ・・・・ <option value="19">19</option> <option value="20">20</option> として、html文に返すようにしたいのです。 この様なことは可能でしょうか? よろしくお願いします。

noname#190358
noname#190358

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

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

処理自体は以下のような感じで <script> window.onload=function(){ var hoge=document.getElementById("hoge"); var l=hoge.options.length; var max=20; while(l++ < max){ var opt=document.createElement("option"); opt.setAttribute("value",l); opt.appendChild(document.createTextNode(l)); hoge.appendChild(opt); } } </script> <select name="example" id="hoge"> <option value="1">1</option> </select> ただし、javascriptでselectを吐き出すということは、 環境依存になりますので、ユーザビリティーはさがります。 あまりお勧めできません。

noname#190358
質問者

お礼

なるほど。そのようなソースになるんですね。 ユーザビリティが低下するということで、考えた結果html内に書くことにしました。 ただ、とても勉強になりました。 ありがとうございました。

関連するQ&A

  • セレクトボックスの操作

    <select name="example1"> <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> </select> <input type="submit" name="1" value="追加"> 例えば、上記のセレクトボックスの3を選択して送信ボタンを押したら、3以外の4つの数字の値を持ったセレクトボックス(select name="example2)を出現させたいのです。(example1を残したまま) 選択した数字以外の値を持ったセレクトボックスを出現させたいです。 <select name="example2"> <option value="1">1</option> <option value="2">2</option> <option value="4">4</option> <option value="5">5</option> </select> <input type="submit"name="2" value="追加"> 上記のようになります。example2の1を選択し送信したら <select name="example3"> <option value="2">2</option> <option value="4">4</option> <option value="5">5</option> </select> <input type="submit" name="3" value="追加"> 上記のようになります。 上記の手順でセレクトボックスが3つに増えた場合のソースは次のような感じに <select name="example1"> <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> </select> <input type="submit" name="1" value="取り消し"> <select name="example2"> <option value="1">1</option> <option value="2">2</option> <option value="4">4</option> <option value="5">5</option> </select> <input type="submit"name="2" value="取り消し"> <select name="example3"> <option value="2">2</option> <option value="4">4</option> <option value="5">5</option> </select> <input type="submit" name="3" value="追加"> 取り消しを押した場合、そのセレクトボックスを削除し、一番新しいセレクトボックス(example3)に削除された値を追加したいです。 example2を取り消した場合、 <select name="example3"> <option value="1">1</option> <option value="2">2</option> <option value="4">4</option> <option value="5">5</option> </select> <input type="submit" name="3" value="追加"> 上記のようになります。 どのように記述すれば実現可能でしょうか? ご教示頂けますと幸いです。 宜しくお願いいたします。

  • Javascriptでselectボックス項目削除

    いつも参考にさせていただいておりますsasaloと申します。 早速ですが、javascriptで分からないことがありご質問させていただきます。 どなたかお知恵・お分かりになるかたがおりましたらどうぞご教授いただけないでしょうか? よろしくお願いします。 行いたいことは、htmlページを読み込んだタイミングでselectボックスの最後の廃番商品の項目を1つだけ削除したく思います。 最後の項目ということになります。 ソースコードは、簡潔に書かせていただきました。 ソースコードは、 <form action="search.php" method="get" name="form"> <select name="situation"> <option value=""></option> <option value="販売中">販売中</option> <option value="在庫切れ">在庫切れ</option> <option value="廃番商品">廃番商品</option> </select> </form> システムを使用しておりまして、変数をhtmlに挿入すると自動的にselectボックスが表示されるようになります。 検索に使用しておりまして、廃番商品の検索は利用しないのでjavascriptにて削除できたらと思います。 いろいろと調べたのですが、inputボタンを押したら消せるなどの情報はありましたがちょっと使用方法がちがいまして・・・。 誠にお手数ですみませんがどなたかお分かりになられる方がおりましたらソースコードをご教授いただけないでしょうか? また、簡単でももちろんかまいませんのでソースコードのご説明をいただけないでしょうか? どうぞよろしくお願いします。 from sasalo

  • SELECTボックスの内容を動的に変えるには

    2つのSELECTボックスを用意し、1つ目のSELECTボックスの内容により 2つめのSELECTボックスの内容(項目数も含め)を変える方法を教えてください。 下記のようなHTMLを作ってみましたが、2つ目のSELECTボックスに項目がないため「オブジェクトがありません」のエラーが出ます。 ------------------------------------------------------- <html> <head> <SCRIPT language="vbscript"> <!-- option explicit sub selchng() dim strsel strsel = sel1.selectedIndex Select Case strsel Case "1" sel2.item(0).value = "1" sel2.item(0).text = "1" sel2.item(1).value = "2" sel2.item(1).text = "2" Case "2" sel2.item(0).value = "a" sel2.item(0).text = "a" sel2.item(1).value = "b" sel2.item(1).text = "b" sel2.item(2).value = "c" sel2.item(2).text = "c" Case else sel2.item(0).value = "A" sel2.item(0).text = "A" End Select end sub --> </SCRIPT> </head> <body> <select name="sel1" onchange=selchng()> <option value="1" selected>1</option> <option value="2" >2</option> <option value="3" >3</option> </select> <select name="sel2"> </select> </body> </html>

  • javascriptでselectボックスの<OPTION>要素数の取

    javascriptでselectボックスの<OPTION>要素数の取得する方法について疑問があります。 データが1件の場合、複数件の場合とで分けて、 <OPTION>要素数を取得する処理を記述していますが、 データが1件の場合、 document.getElementsByName("sel").length で正しい値が取得できません。 詳しくは下記のソースを参照していただきたいのですが、 (1)、(2)、(4)は、正しい値'5'ですが、 (3)だけ誤った値'1'になります。 これはなぜでしょうか? javascript初心者のため、初歩的な質問かもしれませんが、 教えていただけたら嬉しいです。 よろしくお願い致します。 -------------------------------------- <HTML> <HEAD> <SCRIPT language="JavaScript">   function getSelLen(){ var oForm = document.form1; var sObj; var sObj2; //チェックボックスの数でデータが複数件か1件か判別しています。 if(oForm.chk.length){ //データが複数件の場合 for ( var i = 0; i < oForm.chk.length; i++ ) { sObj=document.getElementsByName("sel")[i]; alert("(1) "+ sObj.length); //・・・・(1) 正 sObj2=oForm.elements["sel"][i]; alert("(2) "+ sObj2.length); //・・・・(2) 正 } }else{ //データが1件の場合 sObj=document.getElementsByName("sel"); alert("(3) "+ sObj.length); //・・・・(3) 誤 sObj2=oForm.elements["sel"]; alert("(4) "+ sObj2.length); //・・・・(4) 正 } } </SCRIPT> </HEAD> <BODY> <FORM name="form1"> <TABLE> <TR> <TD> <INPUT type="checkbox" name="chk" > </TD> <TD> <SELECT name="sel" > <OPTION value="" selected> <OPTION value="00">00 <OPTION value="01">01 <OPTION value="02">02 <OPTION value="03">03 </TD> </TR> <!-- 複数件の場合 以下のコメントアウトを解除する --> <!-- <TR> <TD> <INPUT type="checkbox" name="chk" > </TD> <TD> <SELECT name="sel" > <OPTION value="" selected> <OPTION value="00">00 <OPTION value="01">01 <OPTION value="02">02 <OPTION value="03">03 </TD> </TR> --> </TABLE> </FORM> <FORM name="form2"> <INPUT type="button" onClick="getSelLen()" value=" selectの要素数 "> </FORM> </BODY> </HTML>

  • selectボックスの選択結果を変数に代入したい

    ブログのホームページで過去のブログカレンダーを表示させるために、年と月をセレクトボックスから入力して希望の年月のカレンダーを表示させようと頑張っています。 下記プログラムを作成しましたが、selectボックスから選択した年号を変数に代入することが出来ず、取得した年号をjavaの内部処理に使うことが出来ません。 考えられることはいろいろやってみましたが、全て変数に代入するところでうまくいきません。 よろしくご指導お願いします。 <html> <head> <title>選択された表示テキストを取得する</title> </head> <body> <select name="year" onchange="alert(getSelectedText(this))"> <option value="1">2014</option> <option value="2">2013</option> <option value="3">2012</option> </select><a>年</a> <script type="text/javascript"> function getSelectedText(obj){ var txt = obj.options[obj.selectedIndex].text; // 表示テキスト取得 return 'text = ' + txt; // 表示テキストをリターン var selectYear = text; // 表示テキストを変数に代入 } alert(selectYear); // 変数の内容をアラート表示 /*if(selectYear==2014){           // 変数を内部処理に使用 document.write('\ <select name="month" onchange="selectMonth(this)">\ <option value="1">1</option>\ <option value="2">2</option>\ <option value="3" selected>3</option>\ <option value="4">4</option>\ </select><a>月</a>\ ');*/ </script> </body> </html>

  • 年・月・日の3つのselectメニューを1つのクエリーにしたい

    下のような3つに分かれたセレクトメニューを入力したあとに、 <input type="text" name="date" value="2007-1-1">と入力した場合と同じように ひとつのクエリー(&date=2007-1-1)にしたいのですがどう書けばいいのでしょうか… <!--ここから--> 配送日: <SELECT NAME="date_year"> <OPTION value="2007">2007 <OPTION value="2008">2008 <OPTION value="2009">2009 </SELECT>年 <SELECT NAME="date_month"> <OPTION value="1">1  ~省略~ <OPTION value="12">12 </SELECT>月 <SELECT NAME="date_day"> <OPTION value="1">1  ~省略~ <OPTION value="31">31 </SELECT>日 <!--ここまで--> また、selectメニューの初期値を ページを表示した日の翌日にしたいのです。 どうぞよろしくお願いします。

    • ベストアンサー
    • Perl
  • プルダウン Or コンボボックスを選択したら、テキストボックスを入力不可にさせる方法 

    フォーム制御として、JavaScriptを使用して、プルダウンよりある項目が選択されたと同時に、あるテキストボックスの入力を不可、またはmaxlengthを0にしたいのですが、思うように出来ません。 maxlengthをvalue等に変更させたら値は変更されたので、 関数としての動きは問題なさそうです。 どなたか、ご教授お願いいたします。 ※現在下記のソースは、list番号を指定していません。 <script language="JavaScript"> <!-- function MM_jumpMenu(){ parent.document.form1.text1.maxlength=0; } //--> </script> <form name="form1" method="post" action=""> <select name="menu1" onChange="MM_jumpMenu()"> <option selected>unnamed1</option> <option>unnamed2</option> </select> <input type="text" name="text1" maxlength="10"> </form>

  • 入力フォームでdisabledによる入力制限

    プルダウンをdisabledで制御しようと思っています。 yearを選択するまでmonthを無効にしたいのですが、うまくいきませんでした。 下記の簡略化したソースでも動作しませんでした。 テストでwindow.openを入れると動作するので、document...の文かとは思うのですが。 どなたかお気づきでしたら、お教え下さい。 よろしくお願い致します。 <html> <head> <title>inputtest</title> <SCRIPT LANGUAGE="JavaScript"> function menu_ctrl(){ var sel_num = document.sel_inp.year.selectedIndex; if(sel_num == 0){ document.sel_inp.month.disabled = false; // window.open("http://www.google.co.jp/"); } } </SCRIPT> </head> <body onload="menu_ctrl()"> <form name="sel_inp"> <select name="year" onchange="menu_ctrl()"> <option value="00" style="color:#AAAAAA">null</option> <option value="01">2007</option> <option value="02">2008</option> <option value="03">2009</option> </select> <select name="month"> <option value="00" style="color:#AAAAAA">null</option> <option value="01">1</option> <option value="02">2</option> <option value="03">3</option> </select> </form> </body> </html>

  • selectタグに直接onChangeを書かないイベント取得方法

    javascriptが余り詳しくないので困っています。 <select id="select1" name="select1"> <option value="apple">りんご</option> <option value="banana">バナナ</option> </select> このようなselectの選択リストから値を変更した時にイベントを取得したいのです。 普通に考えると <select id="select1" name="select1" onChange="xxx"> のようにonChangeを使えば簡単なのですが、 困ってしまうのがこのselectは自動生成されるものなので、 直接手を加えることができないのです。 なのでselect文には手を加えずに、値が変更されたときに 何か関数を呼び出すようなことをしたいのです。 無理ならしょうがないのですが、何か手があれば教えてください。 よろしくお願いします。

  • [JavaScript+<select>]最初から5文字一致でセレクト状態にしたい。

    こんばんは。 HTMLとJavaScriptで簡単な動的ページを作成しています。 そこで、行き詰っていることがありますのでご相談を・・・。 こういう<SELECT>があるとします・・・。 <FORM name="myform"> <SELECT name="menu"> <OPTION value="item1001">メニュー1</OPTION> <OPTION value="item2001">メニュー2</OPTION> </SELECT> </FORM> 初期値を「メニュー2」にしたい場合・・・これをJavaScriptで指定する場合、ONLOADのタイミングで・・・ document.myform.menu.value = "item2001"; とすればいけます。 今回は・・・"item2"だけの情報でヒットさせたいと思っています。 つまり、optionのvalue値の頭から5桁だけのマッチングでセレクト状態にさせたいのです。 ループという形をとらずにセレクトさせる方法を探しています。 テクニックをご教授下さい・・・。 宜しくお願い致します。