• ベストアンサー

PreLoadとImageオブジェクト

お世話になります。 自分なりにやってみたのですが、エラーが解決できないため、知恵を貸してください。 やりたいことは、「あるリンク画像を押すと、画像が切り替わり(オン)、押されなかった画像はデフォルト画像に戻る(オフ)」ということです。 ソース OnBar = new Array(); OnBar[0] = "On_1.gif"; OnBar[1] = "On_2.gif"; OffBar = new Array(); OffBar[0] = "Off_1.gif"; OffBar[1] = "Off_2.gif"; imgOn = new Array(); imgOff = new Array(); for ( i=0; i<2; i++ ){ var imgOn[i] = new Image(); var imgOff[i] = new Image(); } //画像の割り当て function fncPreLoad(){ for ( i=0; i<2; i++ ) imgOn[i].src = OnBar[i]; imgOff[i].src = OffBar[i]; } //画像変更 function fncChangeBar(Cnt){ for ( i=0; i<23; i++ ) if ( i = Cnt ){ document.images[Cnt].src = imgOn[i]; } else { document.images[Cnt].src = imgOff[i]; } } <body onLoad="fncPreLoad()"> <img src="Off_2.gif" onclick="fncChangeBar(0)" name="images0"> これで実行するとまず、fncPreLoadで「;」がありませんでエラーが出て、onClickイベントで「オブジェクトがありません」でエラーが出てしまいます。 どなたか添削してやってください。 お願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • leaz024
  • ベストアンサー率75% (398/526)
回答No.3

> forのかっこは入れてもエラーが出たので、「入れないのかな?」と勝手に思って入れてません。 これは入れないとダメです。 function fncPreLoad() {   for ( i=0; i<2; i++ ) {     imgOn[i].src = OnBar[i];     imgOff[i].src = OffBar[i];   } } function fncChangeBar(Cnt) {   for ( i=0; i<23; i++ ) {     if ( i = Cnt ){       document.images[Cnt].src = imgOn[i];     } else {       document.images[Cnt].src = imgOff[i];     }   } } それともう1つ。   for ( i=0; i<2; i++ ){   var imgOn[i] = new Image();   var imgOff[i] = new Image();   } のvarも違反ですので、取ってください。 付けるなら、   OnBar = new Array();   OffBar = new Array();   imgOn = new Array();   imgOff = new Array(); の行に付けます。 それから、これは文法違反ではありませんが、   if ( i = Cnt ){ では、iにCntを代入してしまいます。 等しいか調べるには、   if ( i == Cnt ){ とします。 多分こんな感じではないでしょうか。

cat_tomato
質問者

お礼

ありがとうございます。 何でループしてたかわかりました。 代入していては終了条件になりませんね。 何とか動作してくれたのですが、画像を変更してくれないので、もう少しがんばってみます。 本当にありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • xruz
  • ベストアンサー率50% (72/143)
回答No.2

こんにちはcat_tomatoさん、xruzです。 var imgOn = new Array(); var imgOff = new Array(); for ( i=0; i<2; i++ ){ imgOn[i] = new Image(); imgOff[i] = new Image(); } varをつけるならこうしましょうね。 function fncPreLoad(){ for ( i=0; i<2; i++ ) { imgOn[i].src = OnBar[i]; imgOff[i].src = OffBar[i]; } } ここはやっぱり{}が要りますよ。 がんばってくださいね(~:~i

cat_tomato
質問者

お礼

ありがとうございます。 やっぱりかっこは入りました。 どうやらvarがいらなかったってところまでは気づきました。 今度はonClickイベントでループしてしまうようです。 はぁ、問題山積みですが、がんばってみます。 本当にありがとうございました。

すると、全ての回答が全文表示されます。
  • kajix
  • ベストアンサー率33% (1/3)
回答No.1

パッと見たらforの始まりと終りの括弧{ }が無いような気がしますよ。

cat_tomato
質問者

お礼

さっそくの回答、ありがとうございます。 forのかっこは入れてもエラーが出たので、「入れないのかな?」と勝手に思って入れてません。

すると、全ての回答が全文表示されます。

関連するQ&A