画面ロード時に、別フレームの関数(クリック時に画像を変える関数)を実行したいんですけど、どうやって書いたらいいのでしょうか?
ハイパーリンクに別フレームの関数を実行させるものはありましたが・・・。
もしくは、ロード時に別フレームの画像を変えるスクリプトでもいいです。

よろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

JavaScriptの関数を呼ぶときにオブジェクトの階層構造を全部書いてもだめですか?



window.parent
とか
window.top
などのオブジェクトを使って、フレームセットを定義しているページのオブジェクトにアクセスします。

たとえば、ロードしたページの親フレームセットで、
ロードしたページがleft、関数changeImg()のあるページがrightとNAME属性を定義されていたとしたら、
BODYのonLoadイベントでwindow.parent.right.changeImg()を呼んであげればいいと思います。

この回答への補足

早速の回答、ありがとうございます。

おっしゃるとおり、onRoadイベントに書いたのですが、
window.top.right.changeImg(引数いっぱい)

window.top.rightがNullだというエラーが出てしまいます。
2段フレームなので、
window.parent.parent.right.changeImg(引数いっぱい)

ってことなのかな?

補足日時:2001/10/26 17:22
    • good
    • 0
この回答へのお礼

ああ、すみません。
下の構文でちゃんとできました。

window.top.right.changeImg()

ありがとうございました。

お礼日時:2001/10/26 17:49

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q一定時に画像を変え、その画像にリンクを貼るというスクリプトを改造したいのですが

こんにちわ。javascriptはほとんどわかりません。既成のものをHTMLにうめこんだり、スクリプトのHTMLタグ部分を変えたりできる程度です。

今回やりたいのは、数分後に画像を変え、その画像にリンクを貼るというものですが、サンプルであったjavascriptは別ウインドウにリンクを出すというものです。これを別ウインドウではなく、そのままのページにリンク先を表示させるには、どう変えたら良いでしょうか?

http://bunjin.com/java/chang_banner2.html

こちらのjavascriptです。

先述したように、初心者です。理論で教えていただいてもわからないので、できれば具体的に教えていただけると大変助かります。あつかましくて申し訳ありませんが、どなたかお助け下さい。よろしくお願いします。

Aベストアンサー

質問者様が見つけてこられたサンプルのJavascriptを、少しだけ書き換えると出来るかもです。

こんな感じでしょうか。

---------------
<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
<!--
var item = 0;
function change_IMG() {
item += 1;
if (item > 3) item = 0;
if (document.img.complete) {
if (item == 0) {
document.img.src = "yahoo.jpg";
}
if (item == 1) {
document.img.src = "msn.jpg";
}
if (item == 2) {
document.img.src = "google.jpg";
}
if (item == 3) {
document.img.src = "infoseek.jpg";
}
}
changeLINK();
setTimeout("change_IMG()",5000);
}
function changeLINK() {
if (item == 0) {
document.all['myLINK'].href = "http://ヤフー";
}
if (item == 1) {
document.all['myLINK'].href = "http://エムエスエヌ";
}
if (item == 2) {
document.all['myLINK'].href = "http://グーグル";
}
if (item == 3) {
document.all['myLINK'].href = "http://インフォシーク";
}
}
//-->
</SCRIPT>

</HEAD>
<BODY onLoad="change_IMG();">
<a id="myLINK" href="http://ヤフー">
<img src="yahoo.jpg" NAME="img" border="0">
</A>
</BODY>
</HTML>
---------------


setTimeout("change_IMG()",5000);
↑この部分は、5秒後に change_IMG() を実行するということです。
1秒 = 1000 なので、もし、1分経過するたびに画像とリンク先を変更したいのであれば、
5000 を 60000 に書き換えます。

質問者様が見つけてこられたサンプルのJavascriptを、少しだけ書き換えると出来るかもです。

こんな感じでしょうか。

---------------
<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
<!--
var item = 0;
function change_IMG() {
item += 1;
if (item > 3) item = 0;
if (document.img.complete) {
if (item == 0) {
document.img.src = "yahoo.jpg";
}
if (item == 1) {
document.img.src = "msn.jpg";
}
if (item == 2) {
document.img.sr...続きを読む

Qインラインフレームから別フレームの背景画像変更

○ページの構造
親ページ
├フレームA
└フレームB - インラインフレームC

○インラインフレームC内ページ
<script type="text/javascript">
<!--
function bgchange(bgname) {
parent.A.document.body.background = bgname;
}
// -->
</script>

<span onclick='bgchange("img.gif");return false'>背景画像変更!</span>




インラインフレーム内の「背景画像変更!」クリックでAフレームの背景画像が変わるようにしたいのですが、
上のスクリプトだとAB間、B→C、でしか機能しません。どなたか手直しをして頂けないでしょうか?

Aベストアンサー

parent.parent.A.document.body.background = bgname;
または
top.A.document.body.background = bgname;
としてみてください。

Q他のフレームのスクリプトを実行させたい

フレームを左右に分割しています。
左フレームの数値を変えるselect optionがあって、その数値の変更によって右のフレームのスクリプトを実行させたいのですが、どのようにするのでしょうか?

-----------左フレーム-------------
<script>
function keisann(){
//計算部分
//右フレームへ変数の引き渡し
//右フレームのスクリプトの実行____ここの記述がわかりません。
}
var i,ht =[],d;
i=0;
d=50;
ht=new Array;
ht[i] = '<select onChange="keisann()" id="s_yoko">';
for( var i=0; i<=100;)
ht[i] = '<option value='+i+(i==d?' selected':'')+'>'+(i++)+'</option>';
ht[i] = '</select>';
document.write('横寸法 = ', ht.join(''),'<BR>');
</script>

フレームを左右に分割しています。
左フレームの数値を変えるselect optionがあって、その数値の変更によって右のフレームのスクリプトを実行させたいのですが、どのようにするのでしょうか?

-----------左フレーム-------------
<script>
function keisann(){
//計算部分
//右フレームへ変数の引き渡し
//右フレームのスクリプトの実行____ここの記述がわかりません。
}
var i,ht =[],d;
i=0;
d=50;
ht=new Array;
ht[i] = '<select onChange="keisann()" id="s_yoko">';
for( var i=0; i<=...続きを読む

Aベストアンサー

top.right.test_func('hello');

Q画像にカーソルインしたら別フレームの画像を入れ替えたいを

Dreamweaverを使ってホームページを作成しているのですが、困ってます。
画像にカーソルインすると別の位置にある画像がさし変わるというのは、同じフレーム内なら「ビヘイビア」の「ナビゲーションバーイメージの設定」で指定すればいいことはわかるのですが、カーソルインする画像とさし変わる画像が別フレームにある時はどうすればいいのでしょうか?
htmlとjavascriptの知識は多少あるのですが、Dreamweaverで上記の設定ができないとなると、直接javascriptを書かなければならないと思っています。
「別フレームの画像を入れ替える」javescriptを知っている方、教えてください。分かりづらい文章で申し訳ありませんが、よろしくお願いいたします。

Aベストアンサー

Dreamweaverでできると思います。
フレームセットファイルごとDreamweaverで開けば、別フレームも一緒に表示されますよね。
で、カーソルインさせる画像と、差し変わる画像全てに名前をつけます。
<IMG SRC="botan.gif" WIDTH="20" HEIGHT="20" NAME="botan1" BORDER="0">
NAME="botan1"のように。
カーソルインさせる大元の画像を選択した状態で、
ビヘイビアパレット--スワップイメージを選択。(Dreamweaver3Jです)
そうすると、別フレームの差し替えたい画像の名前が出てきますので、
それ以降の操作は、同フレーム内での設定と同じです。
詳しいことはマニュアルに載っています。

Qスクリプトタグ外での関数がなぜ実行されるか

たとえばイベントハンドラーなどで、
onClick="alert('test')"
などと書くと思いますが、このalert()は、JavaScriptの関数であるにもかかわらず、なぜスクリプトタグ外に記載されていても動作するのでしょうか。

Aベストアンサー

>>このalert()は、JavaScriptの関数であるにもかかわらず、なぜスクリプトタグ外に記載されていても動作するのでしょうか。

私も、JavaScriptを記述するとき、「なんでこんなのが動作するの?」と疑問に思っていました。
「JavaScriptは、JavaやC++などのオブジェクト指向言語よりも低機能のスクリプト言語」と思っていたのですが、実際には、”伝統的な(古い!)オブジェクト指向プログラミング”よりも進んだ”メタプログラミング”の考え方が入っているようです。
メタプログラミングとは、実行時にプログラムの解釈(コンパイル)をするだけでなく、プログラム自体を生成&解釈&実行するような機能のことを言うようです(もっと違う意味を表すこともあるようですが・・・)

なので、JavaScriptのタグ外にある"alert('test')"も、HTML DOMとJavaScript DOMが協力して、この文を実行時に解析し、実行しているってことのようです。

P.S.
どうもプログラミング言語の世界では、OOP(オブジェクト指向プログラミング)ってのは、ちょっと古い考え方になっているようです。”まず、何をクラスにすればいいか?それが問題だ!”的な考えの時代があったのですが、現在は、「クラスなんて無くてもいいじゃん!手早く問題を解決できる方法があれば、それを使えば良い」って考え方になっているように思います。

JavaScriptやRubyは、そういう方向で流れているようですし、C#もそういう方向で進化しているといいます。
オブジェクト指向プログラミングよりも新しい概念のメタプログラミングを学ぶ必要があるようです。

>>このalert()は、JavaScriptの関数であるにもかかわらず、なぜスクリプトタグ外に記載されていても動作するのでしょうか。

私も、JavaScriptを記述するとき、「なんでこんなのが動作するの?」と疑問に思っていました。
「JavaScriptは、JavaやC++などのオブジェクト指向言語よりも低機能のスクリプト言語」と思っていたのですが、実際には、”伝統的な(古い!)オブジェクト指向プログラミング”よりも進んだ”メタプログラミング”の考え方が入っているようです。
メタプログラミングとは、実行時にプログ...続きを読む


人気Q&Aランキング

おすすめ情報