アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になります。
自分なりにやってみたのですが、エラーが解決できないため、知恵を貸してください。

やりたいことは、「あるリンク画像を押すと、画像が切り替わり(オン)、押されなかった画像はデフォルト画像に戻る(オフ)」ということです。

ソース

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イベントで「オブジェクトがありません」でエラーが出てしまいます。

どなたか添削してやってください。
お願いいたします。

A 回答 (3件)

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

    • good
    • 0
この回答へのお礼

さっそくの回答、ありがとうございます。

forのかっこは入れてもエラーが出たので、「入れないのかな?」と勝手に思って入れてません。

お礼日時:2001/11/07 12:53

こんにちは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
    • good
    • 0
この回答へのお礼

ありがとうございます。
やっぱりかっこは入りました。
どうやらvarがいらなかったってところまでは気づきました。

今度はonClickイベントでループしてしまうようです。
はぁ、問題山積みですが、がんばってみます。

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

お礼日時:2001/11/07 13:46

> 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 ){
とします。

多分こんな感じではないでしょうか。
    • good
    • 0
この回答へのお礼

ありがとうございます。

何でループしてたかわかりました。
代入していては終了条件になりませんね。

何とか動作してくれたのですが、画像を変更してくれないので、もう少しがんばってみます。
本当にありがとうございました。

お礼日時:2001/11/07 13:49

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