画像の式



0   名前: ami0617 : 2006/12/28(木) 21:09  ID:u3WLHc5E
こんにちは。
JavaScriptは始めたばかりでよくわからないことばかりなのですが、
画像をマウスオーバーなどで変える式に

document.images[A].src=img[B].src; (1)

というのがありますが、これについて教えてください。
どうして

document.images[A].src=document.img[B].src; (2)

ではないのでしょうか。(1)の式だと、img[B].srcがdocumentまでも
書き換えてしまわないのでしょうか。そしたらエラーになるのでは?と。

それから、srcを入れ替えるという発想がよくわかりません。
srcに入っているデータを入れ替えるというのならしっくり来るのですが。

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

1   名前: 匿名 : 2006/12/28(木) 21:09  ID:fUX02C0H
質問の意味がよく分からないが、Image オブジェクトのことを何かと混同しているのかな。

とにかく、これから始めるのであれば、>>0 のような書き方はひとまず忘れて良い。これは後方互換性(昔のブラウザへの対応)のために残されているもので、あまり一般性がない。つーか古い。まあこの先、画像の先読みが必要になったら、Image オブジェクトにまた出会う機会もあるだろう。

今の段階では、getElementsByTagName と getElementById の 2 つを覚えておくと良いと思う。

// 文書内の img 要素を、全部 sample.png に変更
var images = document.getElementsByTagName ('IMG');

for (var i = 0, I = images.length; i < I; i++) {
    images[i].src   = 'sample.png';
    images[i].alt   = '★';
    images[i].title = 'サンプル';
}


// 特定の id を持つ要素のみ、sample.png に変更
var element = document.getElementById ('sampleId');

if (element.tagName == 'IMG') {
    element.src   = 'sample.png';
    element.alt   = '★';
    element.title = 'サンプル';
}


あと今後のために言っておくが、>>0 のようなソースコードの提示の仕方はマズい。img という変数がどこから出てきたのか、こちらは判断できないから。

2   名前: m035 ◆Wpzr1YKOiq : 2006/12/28(木) 21:09  [URL]  ID:SzjF2rIt
> document.images[A].src=img[B].src; (1)
body内のimg要素の配列がdocument.imagesで、そのなかのdocument.images[A]というのが
<img src="hoge.jpg" alt="hoge">

だったとして、Imageオブジェクトimg[B]に格納されたsrcに書き換えられるわけです。
つまり、img[B].src="foo.jpg"なら
<img src="foo.jpg" alt="hoge">

とHTMLに書いてあったのかのようになるわけです。

> document.images[A].src=document.img[B].src; (2)
ですが、documentまで書き換えるという意味が理解できません。
右辺はあくまでも左辺に代入されるだけです。
そうしてこの場合は上記のように画像のURLを書き換えるに過ぎません。
それと、document.img[B].srcとimg[B].srcではまったく別物では?
imgがImageオブジェクトの配列であればdocument上には存在しないのは当たり前かと。

一覧へ戻る