複数ある<img src>のパスを入れるループを作るには?

[上に] [前に] [次に]
たー [E-Mail] 2000/06/05(月) 16:11:49
似たような質問ですみません。

JavaScriptsで質問です。

htmlのテキストボックスobject(TextWord1〜10)の内容を
ループで取る方法はわかりました。→elements

わからないのは、
htmlの<img src>の表示するイメージのパスを
ループで回して代入したいのですが、
可能でしょうか?

MUG 2000/06/05(月) 16:27:06
可能です
document.images[i].src = "canshot.gif";
でループすればOKです。

ずっと前に作ったプログラムの一つの関数ですが・・・
function imgchange()
{
var i = 0;
for(i = 0; i < 100; i++)
{
switch(forprint[i])
{
case 0:
document.images[i].src = "black.gif";
break;
case 10:
document.images[i].src = "clear.gif";
break;
case 20:
document.images[i].src = "canshot.gif";
break;
case 1:
document.images[i].src = "i1.gif";
break;
case 2:
document.images[i].src = "i2.gif";
break;
case 3:
document.images[i].src = "i3.gif";
break;
case 4:
/*500*/ document.images[i].src = "i4.gif";
break;
case -1:
document.images[i].src = "t1.gif";
break;
case -2:
document.images[i].src = "t2.gif";
break;
case -3:
document.images[i].src = "t3.gif";
break;
case -4:
document.images[i].src = "t4.gif";
break;
case -10:
document.images[i].src = "tt1.gif";
break;
case -20:
document.images[i].src = "tt2.gif";
break;
case -30:
document.images[i].src = "tt3.gif";
break;
case -40:
document.images[i].src = "tt4.gif";
break;
default:
alert("imgchange関数, forprint["+i+"]エラー");
}
}
}
※forprint配列の値によって画像を入れ替える関数です。
※switchはエラーが出やすいのでdefault:は確認用。

バギンズ 2000/06/05(月) 18:22:20
imgタグ自体をdocument.writeするのは?

もし、後から変更したいのであればちょっとした助言を...

変更するimgタグが先頭からなら問題ないですけど、
上の方にバナーとかいろいろ他のimgタグがある場合は
変更するimgタグの直前で
topno = document.images.length
を取っておくと便利です。
document.images[topno+i].src = "imgdata" + i + ".gif" ;
とかで表示できますから。

それから、とっても大切なことなのですが、既に表示されている
データじゃないとイメージデータを変更しても表示されない場合が
あるんです。
隅っこの方にwidth=1 height=1で予め表示しておくなんて方法で
回避したりします。
(それでも、更新されない場合がたまにあるんですけどね。)

あと、MACネスケでのonLoad時の問題なのですが、最初にタグで
指定したイメージデータがロードされる前に、イメージデータを
変更しようとすると、ネスケが落ちる(またはフリーズする)という
現象があります。
ネスケのバージョンにより動作が異なる様です。

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