ただいまHPビルダーにてHPを作成しています。
上下にフレームを分けており、
上:地図
下:地名
として・・・
下フレームの地名(リンクを挿入してます)をマウスオーバーすれば、
上フレームの地図に場所を矢印で示す
というような効果ができないものかと考えてます。
これが同じページ内であれば、
HPビルダーの、ロールオーバー効果にて作成することも可能なのですが、
下フレームの地名がたくさんあって
スクロールする必要があるため、
常に地図を表示させるように
地図と地名を別フレームに分けたいのです。
アドバイスよろしくお願いいたします<(_ _)>
No.1
- 回答日時:
別フレームの内容にJavaScriptからアクセスする場合は、
parent.対象のフレーム名.document.myIMG.src=**;
のように、「parent.対象のフレーム名.」を通常のスクリプトの上につけるのが妥当と思います。
地図のあるフレーム名を"main"として、その中にある画像ファイルをロールオーバーさせるのであれば、そのロールオーバーの対象になるimg要素のid名が"chngIMG"の場合は、
parent.main.document.chngIMG.src="***.jpg";
というようなスクリプトを、地名を記載したページ内に仕掛ければ、地名のフレームから地図のあるフレーム内の画像のロールオーバーを指定することができます。
方法がいまいちつかめない場合は、まずホームページビルダーを使って、一ページ内でお望みの動作を実現する仕掛けを組んでください。
そのあと、HTMLソースを開き、マウスオーバーでスクリプトを動かすリンクと、そこから起動されるスクリプトをカットし、地名を入れるページのHTMLファイルにそれらをそのまま移植してください。
あとは、写し取ったスクリプト部分を参照し、その中の「document.~」となっている部分を全て「parent.上フレームの名前.document.~」に置換してみてください。 上フレームの名前については、フレームをセットするHTMLを参照すれば記載してあると思います。 なければ、地図のあるフレームの方のタグに「name="任意のフレーム名"」という属性を追加して、そこでつけたフレーム名をスクリプトの方に記入してください。
少々わかりにくい話になってしまいましたが、参考になれば幸いです。 乱文失礼しました。
この回答への補足
さっそく実行してみましたが、
JavaScriptの知識が貧弱なため、
思うようにいきません・・・
そこで、ロールオーバーではなく、
レイアウト枠を挿入する方法↓
上:地図 にレイアウト枠を作り、
下:地名 の文字に
OnMouseOverでレイアウト表示
OnMouseOutでレイアウト非表示
とイベント設定するやり方ではどうかと考えました。
しかし、この方法もHPビルダーでは
同フレーム内のみ有効で、別フレームでは機能しないです・・・
JavaScriptでこのようなイベントを
別フレームに設定することは可能でしょうか?
No.2
- 回答日時:
画像のロールオーバーも、レイアウト枠の表示・非表示の切り替えについても、別フレームからの操作は可能だと思います。
もしよろしければ、開示したくないファイル名やページ内容などは伏せていただいてかまいませんので、スクリプトを含むHTMLソースを補足していただけませんでしょうか。
ソースを見れば、解決できると思います。
この回答への補足
いろいろお手間を掛けさせてしまいすみません。
さて、HTMLソースですが、
まだ具体的に作成してませんので(汗
このようにしたいという簡単なサンプルを作って、
それをソース表示しました。
上:地図のフレーム
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<META http-equiv="Content-Style-Type" content="text/css">
<TITLE></TITLE>
</HEAD>
<BODY>
<DIV style="width : 27px;height : 20px;top : 53px;left : 295px;
position : absolute;
z-index : 3;
visibility : hidden;
" id="aaa"><IMG src="yajirusi.jpg" width="25" height="19" border="0"></DIV>
<DIV style="width : 26px;height : 21px;top : 155px;left : 390px;
position : absolute;
z-index : 2;
visibility : hidden;
" id="bbb"><IMG src="yajirusi.jpg" width="25" height="19" border="0"></DIV>
<DIV style="width : 26px;height : 21px;top : 54px;left : 492px;
position : absolute;
z-index : 1;
visibility : hidden;
" id="ccc"><IMG src="yajirusi.jpg" width="25" height="19" border="0"></DIV>
<P align="center"><IMG src="map.jpg" width="365" height="190" border="0" align="middle"></P>
</BODY>
</HTML>
下:地名のフレーム
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<META http-equiv="Content-Style-Type" content="text/css">
<TITLE></TITLE>
</HEAD>
<BODY>
<CENTER>
<TABLE border="1">
<TBODY>
<TR>
<TD>aaa</TD>
</TR>
<TR>
<TD>bbb</TD>
</TR>
<TR>
<TD>ccc</TD>
</TR>
</TBODY>
</TABLE>
</CENTER>
</BODY>
上フレームのmap.jpgに、
レイアウト名
aaa
bbb
ccc
という3つのレイアウト枠を作り、
そのレイアウト枠の中にyajirusi.jpgを入れて、
非表示にさせています。
そして、
下フレームの、例えば地名aaaをマウスオーバーすれば
上フレームのレイアウト名aaaを表示させ、
マウスアウトすれば、再び非表示にさせるのが目的です。
この補足でわかりますでしょうか?
よろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
補足見ました。
下の地名を表示するフレーム内のHTMLを、以下のようにしてみてください。
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<META http-equiv="Content-Style-Type" content="text/css">
<TITLE></TITLE>
<script type="text/javascript"><!--
function point(i,sw){
if (document.getElementById){
parent.***.document.getElementById(i).style.visibility=sw; // ***の部分に上のフレーム名を入れてください
}
}
//--></script>
</head>
<body>
<CENTER>
<TABLE border="1">
<TBODY>
<TR>
<TD><a href="#" onMouseover="point('aaa','visible')" onMouseout="point('aaa','hidden')" onClick="return false;">aaa</a></TD>
</TR>
<TR>
<TD><a href="#" onMouseover="point('bbb','visible')" onMouseout="point('bbb','hidden')" onClick="return false;">bbb</a></TD>
</TR>
<TR>
<TD><a href="#" onMouseover="point('ccc','visible')" onMouseout="point('ccc','hidden')" onClick="return false;">ccc</a></TD>
</TR>
</TBODY>
</TABLE>
</CENTER>
</body>
</html>
地名のフレーム側のHTMLを以上のソースにすれば、補足でお伝えいただいている目的の動作は得られると思います。
スクリプト中にもコメント文で記入しましたが、「parent.***.document.~~」の***の部分には、フレームセットをするHTMLに記載されている、上のフレームの名前を入れてください。
一応、Netscape6とIE6で動作確認してあります。 Netscape4.xxでは動作しませんが、少し改造すれば適用可能と思います(手元にNetscape4.xxがなくて、動作確認が取れないので、ここでは割愛します)。
ただ、補足にあるソースでは、地図の側の矢印の画像を、スタイルシートの絶対配置で指定しているので、若干のズレが出る可能性は残るかも知れません。
その場合は、地図の側のHTMLのソースを検討して、矢印の画像の配置の仕方を工夫してみてください。
これでおそらくは上手くいくと思いますが…
素晴らしい!
あちこちHPを検索して試してみても
できなかったことがようやくできました。
これでHP作成も次の段階へ進むことができます。
手間がかかるところ、丁寧にありがとうございました。
そして自分ももっと勉強して
JavaScriptが少しは理解できるようになりたいです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# 【C++】IDirect3DSurfaceのディープコピーは可能ですか? 1 2022/07/06 02:47
- AJAX 自作の地図をグーグルマップのようにしたい 3 2022/11/15 11:53
- その他(IT・Webサービス) Yahooの地図の文字サイズ、googleの地図の画面分割 1 2022/05/21 12:31
- Visual Basic(VBA) フレーム内のオプションボタンの選択結果をセルに書き出したい。 図のような預金種目というフレームにオプ 2 2022/07/29 11:12
- Google Maps iOS でのgoogle map の地図を写真で表示する方法を教えて下さい。 Windows でgo 2 2023/06/02 09:56
- HTML・CSS リンクバナーのHTMLタグ。画像を変えたり、設置位置を変えるとバナー貼付け側はどう見える? 2 2023/02/01 12:01
- サングラス・カラコン 眼鏡 7 2022/11/30 06:36
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/06/23 15:02
- Windows 8 Route Generator の使い方 1 2023/05/03 00:36
- その他(車) 古い普通乗用車の更新終了しているナビを何とか使える方法はないものでしょうか? 5 2023/02/18 23:05
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
時間ごとに表示するページを変...
-
インラインフレームで表示され...
-
フレームでの右クリック禁止
-
iframeの属性(スクロールバー)...
-
スマホ上で、左右スワイプで次...
-
エラー:書き込みができません ...
-
別ページのインラインフレーム...
-
フレームを跨ぐドロップダウン...
-
<a href="#" …>の意味を教えて...
-
bodyにidをつける理由は何ですか?
-
別ファイルのfunctionの読み込み方
-
(Javascript)印刷するファイル...
-
複数のJavascriptを1つのscrip...
-
base64encodeでの文字化けについて
-
入力したテキストボックスのデ...
-
ウインドウの後ろに隠れている...
-
JavaScriptでiframeの内容を「...
-
ウインドウを縮小しても文字を...
-
Cygwinでログをのこす方法
-
jQueryでdivをクリックし別窓で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
スマホ上で、左右スワイプで次...
-
インラインフレームで表示され...
-
フレームを跨ぐドロップダウン...
-
子フレームの自動リロードは可...
-
別ページのインラインフレーム...
-
インラインフレームをドラッグ...
-
<iframe>~</iframe>内のwindow...
-
親フレームのURLによって、...
-
jqueryを利用してインラインフ...
-
エラー:書き込みができません ...
-
submitボタンで他のフレームを...
-
親フレームからkeydownイベント...
-
フレームでの右クリック禁止
-
別フレームの中にあるインライ...
-
フレームが入れ子状態です。フ...
-
別画面の関数の呼び出し
-
ワンクリック、ダブルウインド...
-
チェックボックスのチェックを...
-
親ウィンドウの別フレームを子...
-
フレーム分割すると動かない
おすすめ情報