body onlordとlayer

[上に] [前に] [次に]
まゆ 1999/04/04(日) 00:42:32
<body onlord="Img(a)">などの設定をしてるページで
<layer id=1 z-index=1 width="100%" height="99%" (いろいろ) ></layer>
<layer id=1 z-index=0 width="100%" height="99%" (これもいろいろ) ></layer>
としている場合、javascriptエラーが出てしまい(Img(a)が見つからない)ますが、仕様のようあものでしょうか?
つまり、<layer>ないのオブジェクトの参照?は
その外に記述することになる<body>タグからはできない....

というような関係が、このエラーをおこしているのですか??

Tmb 1999/04/04(日) 04:06:39
質問の内容だけでは全体像が見えないのですが・・・。

>(img(a)が見つからない)
このメッセージから判断すると,img()という関数が認識されてないようですが。
正しく定義しているのでしょうか?
#imgなんて関数,自分で定義しないとありませんよね?

「レイヤー内のオブジェクトの参照」は,その外側から
document.LAYERNAME.document.OBJECTNAME (LAYERNAME,OBJECTNAMEは自分でつけたもの)
という感じでできると思います。

質問の内容からうけた印象だと,仕様がどうこうといった以前に,imgなる関数を正しく
設定しているかどうかの,割と単純なミスのような気がするのですが。
ただ,これがまゆさんの意図している質問への答えかどうかは自信がないので。

もう少し具体的に,どういった動作をさせようとして,どういった考え方で
スクリプトを組んだか教えていただければ,もう少し判りやすい回答ができるかも
しれません。
#あくまで「かも」ですけど (^^;;;

まゆ 1999/04/04(日) 06:15:58
おはようございます。
Tmbさん、ご丁寧な解説をありがとうございました。
下手な文章でごめんなさいです。
どーも作文が苦手。それから、最初の私のタグで、
二つのlayerが同じid なのは、発言の際のスペルミスです(泣)

えっと、とほほさんのページとかで勉強して、マウスをのせると画像が変わるスクリプトを<head></head>ないに書きました。
それで、あらかじめ変わる画像を読み込んでいます。
<layer>を全部とっぱらってしまえば、ちゃんと動くんです。。
マウスをのせる画像を<layer></layer>のなかにかくと、エラーが出ます。
そんなわけで、<layer></layer>の外にめいれいを出してるのは
中にはとどかないのかしらんと思ったのです。

> document.LAYERNAME.document.OBJECTNAME (LAYERNAME,OBJECTNAMEは自分でつけたもの)
という感じでできると思います。

これは<head>ないにjavascriptとして設定するのですか?
ということは、画像が変わるスクリプトをそのようなレイヤ仕様のものに作り替えないとあかんのですね。。

挫折しそう。。

Tmb 1999/04/04(日) 21:04:11
>ということは、画像が変わるスクリプトをそのようなレイヤ仕様のものに作り替えないとあかんのですね。。

いや,言うほど難しいことはないかと。ただ,レイヤーの中はいわば「独立したページ」なので,その中のものを指定する場合は
「レイヤーの中のものだよ」ということを明記しておく必要があるだけの話で。
ちょっと説明がややこしくなるので,テスト用に作ったスクリプトを乗っけ
ときますので,参考にして下されば。レイヤーの内/外から,内/外の画像を
参照する場合の例です。

<body>
<script language="JavaScript">
function changeImg(img,srcs) {
img.src=srcs;
}
</script>
<a href="../"  onMouseOver="changeImg(document.img1,'images/update.gif');">IMG1変える</a><BR>
<a href="../"  onMouseOver="changeImg(document.layer1.document.img2,'images/update.gif');">IMG2変える</a><BR>
<img src="images/new.gif" name="img1">
<BR><BR>
<layer name="layer1">
<a href="../"  onMouseOver="changeImg(parentLayer.document.img1,'images/new.gif');">IMG1戻す</a><BR>
<a href="../"  onMouseOver="changeImg(document.img2,'images/new.gif');">IMG2戻す</a><BR>
<img src="images/new.gif" name="img2">
</a>
</layer>
</body>

Tmb 1999/04/04(日) 21:06:26
あ,最後に消し忘れた</a>が残ってました。

たこすけ 1999/04/05(月) 11:08:15
レイヤーを使用する場合、
画像の場所を相対的に指定しようとすると
混乱しちゃうので(私だけ?)
windowから絶対的に書いちゃえば良いと思う。

レイヤーの中の画像を変える場合
 window.document.レイヤー名.document.イメージ名
レイヤーの外の画像を変える場合
 window.document.イメージ名
レイヤーの中のレイヤーの画像を変える場合
 window.外のレイヤー名.document.中のレイヤー名.document.イメージ名

とりあえず、こんな感じで覚えて、慣れてきてから相対的に指定すれば
よいかと・・・(window・document・レイヤー名の省略、parentの使用等)

#でも私の場合、レイヤー使用できる状況では画像のsrcの変更しない
#レイヤーの可視、不可視を切りかえた方が楽なんだもん

[上に] [前に] [次に]