3枚以上の画像を切り替えたくて以下のようなスクリプトを

書きましたが、どうも2枚までしかうまくできないようです。

if(i<3)の部分をi<4などにすると、
切り替え画像の最後が×印になってしまいます。
画像は連番で3枚用意しています。

<Script type="text/javascript">
<!--
var i=1;
picfilter();

function picfilter(){
if(i<3){
i++;
}
else{
i=1;
}
pic1.filters.blendTrans.apply();
pic1.src="A"+i+".jpg";
pic1.filters.blendTrans.play();
window.setTimeout("picfilter()",3000);
}
//-->
</Script>

<body onLoad="picfilter()">

<img src="A1.jpg" alt="" width="550" height="400" border="0" ID=pic1 STYLE="filter:blendTrans(duration=3.0)">


2枚であれば問題なく動きますが
3枚以上であればうまくできません。
(A1,A2,A3.jpg)

どこが悪いのか教えていただけるとうれしいです。
どうぞよろしくお願いたします。

回答の条件
  • 1人10回まで
  • 登録:2009/12/30 09:41:22
  • 終了:2010/01/06 09:45:03

ベストアンサー

id:horonict No.1

horonict回答回数257ベストアンサー獲得回数512009/12/30 10:22:51

ポイント20pt

スクリプトの前半が間違っています。

'i = 0' に修正してみてください。

var i=1;
picfilter();

function picfilter(){
  if(i<3){
    i++;
  }
  else{
    i=1;
  }
↓
var i=0;
picfilter();

function picfilter(){
  if(i<3){
    i++;
  }
  else{
    i=0;
  }
id:warumaki

ありがとうございます。

<Script type="text/javascript"></p> <p><!--</p> <p>var i=0;</p> <p>picfilter();</p> <p>function picfilter(){</p> <p>if(i<3){</p> <p>i++;</p> <p>}</p> <p>else{</p> <p>i=0;</p> <p>}</p> <p>pic1.filters.blendTrans.apply();</p> <p>pic1.src="A"+i+".jpg";</p> <p>pic1.filters.blendTrans.play();</p> <p>window.setTimeout("picfilter()",3000);</p> <p>}</p> <p>//--></p> <p></Script>

にしてみましたが、やはり最後の画像が×印になってしまいます。

ただ、画像は3枚切り替わっているようです。

(A1,A2,A3.jpg)は用意しています。

i<4にしても同じです。

すみません。

もう一度教えていただけるとうれしいです。

2009/12/30 10:42:25

その他の回答(4件)

id:horonict No.1

horonict回答回数257ベストアンサー獲得回数512009/12/30 10:22:51ここでベストアンサー

ポイント20pt

スクリプトの前半が間違っています。

'i = 0' に修正してみてください。

var i=1;
picfilter();

function picfilter(){
  if(i<3){
    i++;
  }
  else{
    i=1;
  }
↓
var i=0;
picfilter();

function picfilter(){
  if(i<3){
    i++;
  }
  else{
    i=0;
  }
id:warumaki

ありがとうございます。

<Script type="text/javascript"></p> <p><!--</p> <p>var i=0;</p> <p>picfilter();</p> <p>function picfilter(){</p> <p>if(i<3){</p> <p>i++;</p> <p>}</p> <p>else{</p> <p>i=0;</p> <p>}</p> <p>pic1.filters.blendTrans.apply();</p> <p>pic1.src="A"+i+".jpg";</p> <p>pic1.filters.blendTrans.play();</p> <p>window.setTimeout("picfilter()",3000);</p> <p>}</p> <p>//--></p> <p></Script>

にしてみましたが、やはり最後の画像が×印になってしまいます。

ただ、画像は3枚切り替わっているようです。

(A1,A2,A3.jpg)は用意しています。

i<4にしても同じです。

すみません。

もう一度教えていただけるとうれしいです。

2009/12/30 10:42:25
id:ween No.2

ween回答回数78ベストアンサー獲得回数72009/12/30 10:41:47

ポイント20pt

自分の環境では、こうすれば上手く動きました。

window.setTimeout("picfilter()",3000);
              ↓
window.setTimeout(picfilter,3000);
id:warumaki

ありがとうございます。

早速ためしてみます。

2009/12/30 11:58:02
id:BdashANDdead No.3

BdashANDdead回答回数45ベストアンサー獲得回数52009/12/30 10:57:13

ポイント20pt

if(i<3){

i++;

}

画像1~3までの3回ループなのでここは i<4ですね


画像自体に問題はありませんか?

試しにA2.jpgをA3.jpgに名前を変更して表示させてみて表示できるか試してみては

id:warumaki

ありがとうございます。

早速ためしてみます。

2009/12/30 11:57:57
id:Mook No.4

Mook回答回数1312ベストアンサー獲得回数3912009/12/30 11:48:07

ポイント20pt

こちらで提示のコードを試してみましたが、3枚の画像で問題なく動作しました。


ファイル名が A1.jpg, A2.jpg, A3.jpg であれば問題ないと思いますが、

ファイル名のAや数字が全角になったりしていないでしょうか。


画像ファイルの数値が 0~2 ではなく1~3 であれば、最初の提示されたコードで

よいはずです。ちなみに A4.jpg を用意すれば、

 if(i<4)

で4枚の画像で動作しました。

id:warumaki

ありがとうございます。

ファイル名が悪いのかもしれません。

試してみます。

2009/12/30 11:57:43
id:chinjoh No.5

chinjoh回答回数103ベストアンサー獲得回数52009/12/30 12:07:41

ポイント20pt

数字->文字の変換を明示的にしてみてください。

String(num)

http://www.tohoho-web.com/js/builtin.htm#toNumber

もしこれで解決しなければ、ファイル名を出力してみてください。

数字の前にスペースが含まれてませんか?

id:warumaki

教えていただいた方法は少し難しくてわかりませんでしたが

みなさんがここに書いていただいたアドバイスで

なんとかうごくようになったみたいです。

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

2010/01/05 18:01:22

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません