• ベストアンサー

複数のプルダウンメニューの表示について

複数のプルダウンメニューについてですが、 以前、こちらで教えてもらったことを応用したいのです。 フォーームの中の「グループ1」と「グループ2」という大分類は文字の表示だけでリンクしないようにしたいのです。 この状態だと、「グループ1」という名前もプルダウンの中に入ってしまって、 ファイルがないので、リンクエラーの警告がでます。 どこが間違っていて、 どのように変えたらいいのでしょうか。 よろしくお願い致します。 <script language="javascript"> <!-- var s; function reSel(c) { if(s&&(s!=c)) s.options[0].selected=true; s=c; } function A_Li() {   Sel=document.Link1.OP.selectedIndex;   Ms=document.Link1.OP.options[Sel].value;   parent.main.location.href=Ms; reSel(document.Link1.OP); } function B_Li() {   Sel=document.Link1.OP2.selectedIndex;   Ms=document.Link1.OP2.options[Sel].value;   parent.main.location.href=Ms; reSel(document.Link1.OP2); } // --> </script> ---------------HTML------------ <FORM name="Link1"> <SELECT name="OP" onChange="A_Li()" size="1"> <OPTION Value="-" SELECTED>グールプ1</option> <option value="1.htm">あ</option> <OPTION Value="2.htm">い</option> <OPTION Value="3.htm">う</option> <OPTION Value="4.htm">え</option> <OPTION Value="5.htm">お</option> </SELECT> <SELECT name="OP2" onChange="B_Li()" size="1"> <OPTION Value="-" SELECTED>グールプ2</option> <option value="6.htm">か</option> <OPTION Value="7.htm">き </option> <OPTION Value="8.htm">く </option> </SELECT>

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

  • ベストアンサー
noname#2494
noname#2494
回答No.1

>どこが間違っていて、 間違っているというか、プログラム通りに動いている証拠ですね。 その大分類の時は無視するようにプログラムしなければならないと思います。 >どのように変えたらいいのでしょうか。 function A_Li() { if(document.Link1.OP.options[Sel].value != "-") {    Sel=document.Link1.OP.selectedIndex;    Ms=document.Link1.OP.options[Sel].value;    parent.main.location.href=Ms; reSel(document.Link1.OP); } と言うような感じで、if文を追加すれば、大分類の時には変更しても変化が出ないようになると思います。 いかがでしょうか?

shizuku
質問者

お礼

みなさん、ご丁寧にありがとうございました。 みなさんのを参考になんとかできました。 ありがとうございました。

shizuku
質問者

補足

早速のご回答をありがとうございます。 変更してみたのですが、 例えば「グループ1」の小項目から「グループ2」の小項目をうつって、 次に「グループ1」の”大項目(グループ1という名称)”をクリックした場合は 変更がでないのですが、 同じグループ内の小項目を行き来すると「ページが表示できません」とでてしまいます。。。

その他の回答 (3)

  • loveobo
  • ベストアンサー率48% (102/210)
回答No.4

このカテゴリのQ&Aで勉強させていただいている初心者です。 グループ1の最初の<option>にvalueを指定しなければ、A_Li() は何もしない のではないでしょうか? 変更した<select>を「this」で Li()の引数に渡して、 functionを共有させてみました。嘘を書いていたらゴメンナサイ。 <script language="JavaScript"><!-- var s; //前に選択した<select>を格納する変数sを宣言 function Li(Grp) { //今回選択した<select>を引数Grpに受取り Ms = Grp.options[Grp.selectedIndex].value; //リンク先urlを変数Msに格納 if (s &&(s!=Grp)) s.selectedIndex=0; //前回変更した<select>があり、今回と異なる時、前回の選択肢を初期表示にする s = Grp; //次にLi()が呼び出されるときの「前回選択した<select>」として格納 parent.main.location.href = Ms; //Msのファイル名をmainフレームに書き出す } //--></script> <form> <select onChange="Li(this)"> <option selected>グループ1 <option value="1.html">あ <--中略--> </select> <select onChange="Li(this)"> <option selected>グループ2 <option value="6.html">か <--以下略-->

shizuku
質問者

お礼

みなさん、ご丁寧にありがとうございました。 みなさんのを参考になんとかできました。 ありがとうございました。

noname#2494
noname#2494
回答No.3

あ、すいません。 検証する時間がなかったので、未確認のまま回答してしまいましたが… フォローありがとうございます。

  • A__
  • ベストアンサー率47% (22/46)
回答No.2

Hawk-Wさんは新しく Sel を得るのを忘れていたみたいです。 function A_Li() { if(document.Link1.OP.options[Sel].value != "-") {    Sel=document.Link1.OP.selectedIndex; だったのを function A_Li() {  Sel=document.Link1.OP.selectedIndex;  if(document.Link1.OP.options[Sel].value != "-") {    にすればうまくいきそうです。 <script language="javascript"> <!-- var s; function reSel(c) {  if(s&&(s!=c)) s.options[0].selected=true;  s=c; } function A_Li() {  Sel=document.Link1.OP.selectedIndex;  Ms=document.Link1.OP.options[Sel].value;  if(Ms!="-"){   alert(Ms+"_A")   parent.main.location.href=Ms;  reSel(document.Link1.OP);  } } function B_Li() {  Sel=document.Link1.OP2.selectedIndex;  Ms=document.Link1.OP2.options[Sel].value;  if(Ms!="-"){   alert(Ms+"_B")   parent.main.location.href=Ms;   reSel(document.Link1.OP2);  } } // --> </script> <button onClick=document.Link1.OP.options[0].selected=true></button> <FORM name="Link1"> <SELECT name="OP" onChange="A_Li()" size="1"> <OPTION Value="-" SELECTED>グールプ1</option> <option value="1.htm">あ</option> <OPTION Value="2.htm">い</option> <OPTION Value="3.htm">う</option> <OPTION Value="4.htm">え</option> <OPTION Value="5.htm">お</option> </SELECT> <SELECT name="OP2" onChange="B_Li()" size="1"> <OPTION Value="-" SELECTED>グールプ2</option> <option value="6.htm">か</option> <OPTION Value="7.htm">き </option> <OPTION Value="8.htm">く </option> </SELECT> </FORM>

shizuku
質問者

お礼

みなさん、ご丁寧にありがとうございました。 みなさんのを参考になんとかできました。 ありがとうございました。

shizuku
質問者

補足

丁寧にありがとうございます。 やってみたのですが、例えばhtmにリンクすると、 全てにアラート表示がでてしまうのですが、私のほうで、 どこかを変えなければいけないでしょうか? たびたびで申し訳ありませんが、よろしくお願い致します。

関連するQ&A

  • 複数プルダウンでメニューを初期表示に戻したい

    No.157334でleaz024さんに「複数プルダウンメニュー」について教えてもらったものですが、ひとつ、追加したいことがあるので教えてください。 教えていただいたスクリプトは <script language="javascript"> <!-- function A_Li() {   Sel=document.Link1.OP.selectedIndex;   Ms=document.Link1.OP.options[Sel].value;   parent.main.location.href=Ms;} function B_Li() {   Sel=document.Link1.OP2.selectedIndex;   Ms=document.Link1.OP2.options[Sel].value;   parent.main.location.href=Ms;} // --> </script> <FORM name="Link1"> <SELECT name="OP" onChange="A_Li()" size="1"> <OPTION Value="main.htm" SELECTED>ページを選んでください <option value="main.htm">ぺージ1</option> <OPTION Value="abc.htm">ページ2 <OPTION Value="def.htm">ページ3 </SELECT> <SELECT name="OP2" onChange="B_Li()" size="1"> <OPTION Value="aaa.htm" SELECTED>ページを選んでください <option value="bbb.htm">ぺージ1</option> <OPTION Value="ccc.htm">ページ2 <OPTION Value="ddd.htm">ページ3 </SELECT> です。 例えば OP2のメニューをクリックしたあと OP3のメニューをクリックしたときにOP2のメニューが初期の 表示メニューに戻したいのですが、どう変えればよいでしょうか。 初心者なので本を見てみたのですがわかりませんでした。 どうぞよろしくお願いいたします。

  • 同一ページに複数のプルダウンメニュー

    同一ページに複数のプルダウンメニューをつけたいのですが、 どうすればよいのでしょうか。 下記のように1つはつけることができたのですが、 2つめから、どこをどう変えて追加すればよいのかわかりません。 <script language="javascript"> <!-- function A_Li(){ Sel=document.Link1.OP.selectedIndex; Ms=document.Link1.OP.options[Sel].value; parent.main.location.href=Ms;} // --> </script> <FORM name="Link1"> <SELECT name="OP" onChange="A_Li()" size="1"> <OPTION Value="main.htm" SELECTED>ページを選んでください <option value="main.htm">ぺージ1</option> <OPTION Value="abc.htm">ページ2 <OPTION Value="def.htm">ページ3 </SELECT> よろしくお願いします。

  • IE以外のブラウザで対応するには

    超初心者です、見よう見まねで以下のような、セレクト1を選ぶとセレクト2は「選択」(2を選べばその逆)になる外部javascriptとhtmlを作ってみました。IEでは動く(option valueにリンクする)のですが他(サファリやファイアーフォックス)では全く動きません。どこか変なところがあるのでしょうか?それともIE以外では諦めなければならないでしょうか?ご教授の程、よろしくお願い致します。 #外部javascript(ファイルネーム select.js) var s; function reSel(c) { if(s&&(s!=c)) s.options[0].selected=true; s=c; } function A_Li() { parent.myNew.location.href=document.Link1.select1.options.value;   Sel=document.Link1.select1.selectedIndex;   Ms=document.Link1.select1.options[Sel].value; reSel(document.Link1.select1); } function B_Li() { parent.myNew.location.href=document.Link1.select2.options.value;   Sel=document.Link1.select2.selectedIndex;   Ms=document.Link1.select2.options[Sel].value; reSel(document.Link1.select2); } #以下 HTMLソース <script src="./select.js" type="text/javascript" ></script> <FORM name="Link1"> <select name="select1" onChange="A_Li()"> <option value= new.html selected>選択</option> <option value= aaa.html>aaa</option> <option value= bbb.html>bbb</option> <option value= ccc.html>ccc</option> </select> <select name="select2" onChange="B_Li()"> <option value= new.html selected>選択</option> <option value= ddd.html>ddd</option> <option value= eee.html>eee</option> <option value= fff.html>fff</option> </select> </FORM >

  • 複数のプルダウンメニューの選択項目を変更するには?

    複数のプルダウンメニューを使ってページリンクをさせています。 その際ページリンクと同時に、他のメニューの選択項目を初期値す方法を教えてください。 No.157334で同じような質問があったので、それを参考に以下のように記述してみましたが、 function reSel(c) { for(i=0; i<9; i++){ var s="document.unit.DDList"; var x=s+i; if(x != c){ x.selectedIndex=0; //ココがうまくいきません。 } } } function Li_0(obj){ parent.res.location.href=obj.options[obj.selectedIndex].value; reSel("document.unit.DDList0"); } (以降 Li_8まで同様) <form name="unit" method="post"> <select name="DDList0" size="1" onChange="Li_0(this)"> <option value="help.html" selected> </option> <option value="unit_a.html">AAA</option> <option value="unit_b.html">BBB</option> </select> (以降 DDList8まで同様) です。 どうぞよろしくお願いいたします。

  • プルダウンメニューリンクを新しいウインドウで表示させたい

    ホームページビルダー11を使っています。プルダウンメニューからリンク先を「新しいウインドウ」で表示させるにはどのようにしたらよろしいのでしょうか。ご指導よろしくお願い致します <SCRIPT language="JavaScript"> <!--- 非表示 function quicklink(w){ if(w == "") return; document.quick.url.selectedIndex = 0; location.href =w; } //end ---> </SCRIPT> <FORM name="quick" action="./"><SELECT name="url" onchange="quicklink(this.form.url.options[this.form.url.selectedIndex].value)" size="1" tabindex="1"> <OPTION selected>■ リンク先を選んでクリック ■ </OPTION> <OPTION value="index.htm">その1</OPTION> <OPTION value="index-2.htm">その2</OPTION> <OPTION value="index-3.htm">その3</OPTION> </SELECT>←関連リンク先</FORM> <TABLE width="100%" border="1" cellpadding="0" cellspacing="0" class="hpb-subh02">

  • フレームを使用した複数プルダウンメニュー

    こんにちは。 よくある質問もみたのですが「複数のプルダウンメニュー」「フレームを使ったプルダウン」というのはあるのですが、 フレームを使用して左フレームに複数プルダウン、そこで選んだものを右フレームに表示させるというのが見つかりませんでした。 「複数のプルダウンメニュー」もつくれますし、「別フレームに表示させる」こともできるのですが、 プルダウンを増やしたとたんに動きません。 ネームを変えてもみたのですがうまくいきません。 フレームを二つつくって <FRAMESET cols="35%,65%"> <FRAME src="n_menu.htm" name="manu">←こっちにプルダウンメニュー <FRAME src="n_main.htm"name="main">←こっちに表示 目次のhtmファイルで <SCRIPT LANGUAGE="JavaScript"> function openPage() { var list = document.forms[0].urlList; parent.frames[1].location = list.options[list.selectedIndex].value; } </SCRIPT> </HEAD> <FORM> <SELECT NAME="urlList" onChange="openPage()"> <OPTION SELECTED VALUE="cover1.htm">朝の歌 <OPTION VALUE="1.htm">1番目のページ <OPTION VALUE="2.htm">2番目のページ <OPTION VALUE="3.htm">3番目のページ </SELECT> </FORM> #上記をコピペして増やしてみた↓ <FORM> <SELECT NAME="urlList2" onChange="openPage()"> <OPTION SELECTED VALUE="cover2.htm">夜の歌 <OPTION VALUE="4.htm">4番目のページ <OPTION VALUE="5.htm">5番目のページ <OPTION VALUE="6.htm">6番目のページ </SELECT> </FORM> これだと2本目が表示されません。 どうすればいいか教えていただけないでしょうか?

  • プルダウンメニューのselected部分のリンクをとる方法

    以前こちらで教えていただいたプルダウンメニューなのですが、 selected部分にもリンクがされてしまっているので、 これをリンクさせないようにしたいのですが、やり方がわかりません。 どなたか教えていただけますでしょうか? 宜しくお願いいたします。 ソース <form name="b" method="post" target="_blank" action="https://○○○○/reservationtop.asp"> <select name="***************" onChange="document.b.submit()"> <option selected>予約する</option> <option value="1">リンク3</option> <option value="2">リンク2</option> <option value="3">リンク3</option> </select>

  • プルダウンメニューのターゲット指定

    タイトルどおりなのですが、プルダウンメニュー のリンク先を同ページ内のiframeにしたいのですが これはどうすればできるのでしょうか? こちらに現在の状況を載せておきます。 <SCRIPT LANGUAGE="JavaScript"><!-- function Jump() { tu = document.f.elements['jumpto'].options[document.f.elements['jumpto'].selectedIndex].value if( tu != '-' ) { location.href = tu; } else { alert('移動先を選択して下さい。'); } } // --></SCRIPT> <FORM NAME="f"> <SELECT NAME="jumpto" onChange="Jump();">> <OPTION VALUE="-" SELECTED>移動先を選択</OPTION> <OPTION VALUE="menu1.htm" target="menu">Page1</OPTION> <OPTION VALUE="menu2.htm" target="menu">Page2</OPTION> </SELECT> </FORM> よろしくお願い致します。

  • 複数のプルダウンメニューの組み合わから外部リンクを作りたい・・・

    複数のプルダウンメニューからそれぞれ組み合わから外部リンクを作りたいのですが、できません。 過去に、こちらで質問されている方がいましたが http://oshiete1.goo.ne.jp/qa3418973.html 回答されている方の様作成したらプルダウンが2個なら上手く動作しました。 やりたいことは、全く上記の方の質問内容と 同じです。 今回、4個のプルダウンメニューで作成したいのですが 上手くいきません・・・ 上記の質問にご回答されていた方のものを 参考にサンプルで作成してみたのですが 動作しません・・・ それと、各プルダウンメニュー内で表示させたい項目が12あるのですが簡潔にjavascriptの記述ができますでしょうか? arr[0][0][0]= "http://www.link_0_1.com";・・・・ 以下の行数がとても長くなってしまうので 簡潔にしたいのですが、できますでしょうか? こちら、javascriptは初心者です。 どうぞ、宜しくお願いします。 ----------------------------------------------------------- <html> <head> <script Language="JavaScript"> <!-- /*** 変数 ***/ // カラー (color) とサイズ (size) インチ(inch)の初期値 var color = 0; var size = 0; var inch = 0; // 二次元配列を定義する。 var arr = new Array(); arr[0] = new Array(); arr[1] = new Array(); arr[2] = new Array(); // arr[色][サイズ][インチ] という指定でリンクする URL が決定する。 arr[0][0][0]= "http://www.link_0_1.com"; arr[0][1][0]= "http://www.link_0_1.com"; arr[0][2][0] = "http://www.link_0_1.com"; arr[1][0][0] = "http://www.link_0_1.com"; arr[1][1][0] = "http://www.link_0_1.com"; arr[1][2][0] = "http://www.link_0_1.com"; arr[2][0][0] = "http://www.link_0_1.com"; arr[2][1][0] = "http://www.link_0_1.com"; arr[2][2][0] = "http://www.link_0_1.com"; arr[0][1][0] = "http://www.link_0_1.com"; (以下省略) /*** 関数 ***/ function set_color(selected_option) { color = selected_option.selectedIndex; print_link_url(); } function set_size(selected_option) { size = selected_option.selectedIndex; print_link_url(); } function set_inch(selected_option) { inch = selected_option.selectedIndex; print_link_url(); } function print_link_url() { document.form1.link_url.value = arr[color][size][inch]; } function jump() { location.href = arr[color][size][inch]; } // --> </script> </head> <body> <form name="form1" method="GET"> カラー: <select onChange="set_color(this)"> <option value="赤">赤</option> <option value="青">青</option> <option value="黄">黄</option> </select> サイズ: <select onChange="set_size(this)"> <option value="L">L</option> <option value="M">M</option> <option value="S">S</option> </select> サイズ: <select onChange="set_inch(this)"> <option value="11">11</option> <option value="12">12</option> <option value="13">13</option> </select> <br> <input type="button" value="検索" onClick="jump()"> <br> </form> </body> </html>

  • 複数のプルダウンメニューの作り方。

    ・Aリスト、Bリスト…とプルダウンメニューを複数含んだフォームを一つのhtmlに作りたいのですが、上手くいきません。 一つのフォームに一つのプルダウンメニューは上手くいくのですが、Javascriptを二つ並べると動かなくなります。 とりあえず関数名を重複しない様にしたらいいという事だけはネットで調べてわかりました。 今は、下記の状態になっています。 <script language="JavaScript"> <!-- function MENU(){ mySelect = document.myForm.myMenu.selectedIndex; location.href = document.myForm.myMenu.options[mySelect].value; } // --> </script> <form name="myForm"> <select name="myMenu" onChange="MENU()"> <option value="">A</option> <option value="a001.html">A001</option> <option value="a002.html">A002</option> <option value="a003.html">A003</option> </select> <select name="myMenu2" onChange="MENU()"> <option value="">B</option> <option value="b001.html">B001</option> <option value="b002.html">B002</option> <option value="b003.html">B003</option> </select> </form> ご指南の程宜しくお願いします。