- ベストアンサー
「フォーム リストボックス」の作成について
リストボックスによる選択メニューを作成しています。 HP作成ソフトで、型枠は簡単に作成できますが、 その設定の中で、「値」の記述で困っています。 具体的に実現させたいことは以下のとおりです。 1.フレームAにリストボックスを置く。 2.フレームB(親)の内容を、選択によって変化させる。 以前に、同一ページにリストボックスを置いて 変化させる方法は取ったことがあるのですが、 今回のケースではなかなかうまくいきません。 勉強を兼ねて作成していますので、 どんな細かいことでも構いません。 よろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
フレームBが親となっていますが、フレーム内フレームですか? 単純にフレームが横に並んでいる場合は、親ではないですよ。 まず、フレーム設定時にフレームに名前を付けましょう。 <HTML> <HEAD> </HEAD> <FRAMESET cols="130,*" border="0"> <FRAME src="frameA.html" name="frameA"> <FRAME src="frameB.html" name="frameB"> </FRAMESET> </HTML> で、frameAのスクリプトを以下のように書きます。 <HTML> <HEAD> <script type="text/javascript"> function viewURL(sel) { adrs = sel.options[sel.selectedIndex].value; if(adrs!=0){ top.frameB.location=adrs; } } </script> </HEAD> <BODY> <FORM ACTION="."> <SELECT NAME="aaa" onChange="viewURL(this)"> <OPTION value=0>選んでください <OPTION value="http://www.yahoo.co.jp">Yahoo <OPTION value="http://www.goo.ne.jp">goo <OPTION value="http://www.google.co.jp">Google <OPTION value="http://www.excite.co.jp">Exite </SELECT> </FORM> </BODY> </HTML> これで、プルダウンで選択すると、横の大きなフレームに指定したページを表示できます。URLにジャンプするのではない場合は、書き換えてください。
その他の回答 (3)
- madman
- ベストアンサー率24% (612/2465)
<SELECT NAME="aaa" onChange="viewURL(this)"> でSELECTの内容を書き換えた時に動く。thisは今回選択する情報。 viewURL(sel)のselは引数なので、SELECTの情報。 sel.selectedIndexこれはSELECTで選ばれている番号。 0から順番だったと思う。 sel.options[].valueは、SELECTの並んでいるOPTIONの値。 <OPTION value="http://www.yahoo.co.jp">Yahoo で設定したvalueの情報が入っています。 で、選んだ番号を[]内に添字で入れますので、実際に選んだ番号のvalueをadrsに代入します。今回はvalueはURLです。 if(adrs!=0){ このadrsの値が0でなければ、 top.frameB.location=adrs; 一番上位のWindowに含まれるframeBというフレームの中身をadrsのアドレスで書き直します。 if(adrs!=0){ で0を判定しているのは、リストの一番上の空白を選択した時は動作しないようにする為です。 まだJavaScript勉強しはじめて2週間ぐらいなんで、私の説明も結構いい加減かも...(^^; ビルダーなどのツールで、JavaScriptを勉強するなら、出力されたコードがなぜ索動くのかを勉強したほうが良いですよ。 ビルダーは結構無駄なコードをはいたりしますから。
お礼
ありがとうございました! 参考URLも参照しながら勉強してみようと思います。 お手数をおかけしました。
- madman
- ベストアンサー率24% (612/2465)
上中下でも、基本は同じです。 親フレームは、<FRAMESET>1つなのですよね? その仲にFRAMEが3つあるのであればフレーム内に置くスクリプトは同じです。 こんな感じ <HTML> <HEAD> </HEAD> <FRAMESET rows="130,*,60" border="0"> <FRAME src="frameA.html" name="frameA"> <FRAME src="frameB.html" name="frameB"> <FRAME src="frameC.html" name="frameC"> </FRAMESET> </HTML>
お礼
ありがとうございました。 先ほどの補足を行った後に、 教えていただいたスクリプトを組み込み、 たった今動作したところでした! よろしければ、今回のスクリプト構文に関して、 簡単な解説文を頂けないでしょうか? 今後にも役立つと思いますので…。 たびたび申し訳ありませんが、 またよろしくお願いいたします。
- kagetora_uesugi
- ベストアンサー率48% (12/25)
大まかに説明しますと、ターゲットを指定する必要があります。 親を変化させたいのでしたら、_parentというのを設定する必要があります。 ただ、作成ソフトで作っているということですがどのソフトでやられてるかわかりませんが。 もし、そのソフトでリンク先を設定する際に、どこかにターゲットという項目はありませんか?もしそれがあれば、そこに設定します。
お礼
ありがとうございました。 単純にフレーム内でリンクを張った場合に有効な ターゲットなんですよね? 今後にも活かしていきたいと思います。
補足
早速のアドバイスありがとうございます。 使用しているソフトは、ホームページビルダーVer.6です。 リストボックスの属性の設定を開くと、 【項目】【値】の2種類しかありません。 ヘルプ内を見ても、値に関しては詳しい説明がなく、 苦労しています…。
補足
早速のアドバイスいただきありがとうございます。 フレームの説明が不足していたようですので、 付け加えさせていただきます。 フレーム構成は、上中下の3段構成にしており、 その中で、上フレームにリストを置き、 選択により、中フレームを変化させようとしています。 上記の補足を踏まえたアドバイスを頂けると幸いです。 よろしくお願いいたします。