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

お世話になります。

http://bunjin.com/java/
こちらの「画像操作→スライドショーのように画像を表示する」を参考にして、
フェードインするスライドショーを2か所に表示させたいと考えています。
1か所なら上手くいくのですが、2か所目がエラーになってしまいます。

外部jsファイルに次のように記入し、
------------------------------------------------------

// JavaScript Document

var fade_speed = 10000;
var fade_duration = 10;
var image = new Array();

image[0] = '1.jpg';image[1] = '2.jpg';image[2] = '3.jpg';
var t;
var j = 0;
var p = image.length;
var pre_load = new Array();
for (i = 0; i < p; i++) {
pre_load[i] = new Image();
pre_load[i].src = image[i];
}
function start_fade() {
if (document.all) {
document.images.photo2.style.filter="blendTrans(duration=fade_duration)";
document.images.photo2.filters.blendTrans.Apply();
}
document.images.photo2.src = pre_load[j].src;
if (document.all) {
document.images.photo2.filters.blendTrans.Play();
}
j = j + 1;
if (j > (p - 1)) j = 0;
t = setTimeout('start_fade()', fade_speed);
}


photo[0] = '4.jpg';photo[1] = '5.jpg';photo[2] = '6.jpg';
var t2;
var j2 = 0;
var p2 = photo.length;
var pre_load = new Array();
for (i2 = 0; i2 < p2; i2++) {
pre_load[i2] = new Image();
pre_load[i2].src = photo[i2];
}
function start_fade2() {
if (document.all) {
document.images.photo3.style.filter="blendTrans(duration=fade_duration)";
document.images.photo3.filters.blendTrans.Apply();
}
document.images.photo3.src = pre_load[j2].src;
if (document.all) {
document.images.photo3.filters.blendTrans.Play();
}
j2 = j2 + 1;
if (j2 > (p2 - 1)) j2 = 0;
t2 = setTimeout('start_fade2()', 8000);
}

------------------------------------------------------

htmlには
<body id="top" onLoad="start_fade()">

<img src="1.jpg" name='photo2' />
<img src="4.jpg" name='photo3' />

のように記入しています。

後半の2か所目の指定がどこか足りない又は違うのではないかと思うのですが、
色々試してみても上手くいきません。
ご教授をお願いいたします。

A 回答 (2件)

// JavaScript Document


var fade_speed = 10000;
var fade_duration = 10;
var image = new Array();

image[0] = '1.jpg';image[1] = '2.jpg';image[2] = '3.jpg';
var t;
var j = 0;
var p = image.length;
var pre_load = new Array();
for (i = 0; i < p; i++) {
pre_load[i] = {}; // ここはObjectにすべき
pre_load[i].src = image[i];
}
function start_fade() {
if (document.all) {
document.images.photo2.style.filter="blendTrans(duration=fade_duration)";
document.images.photo2.filters.blendTrans.Apply();
}
document.images.photo2.src = pre_load[j].src;
if (document.all) {
document.images.photo2.filters.blendTrans.Play();
}
j = j + 1;
if (j > (p - 1)) j = 0;
t = setTimeout('start_fade()', fade_speed);
}

var photo = []; // photoの宣言と配列設定がない
photo[0] = '4.jpg';photo[1] = '5.jpg';photo[2] = '6.jpg';
var t2;
var j2 = 0;
var p2 = photo.length;
var pre_load2 = new Array(); // pre_loadが上書きされている
for (i2 = 0; i2 < p2; i2++) {
pre_load2[i2] = {}; // pre_load2を参照かつObjectにすべし
pre_load2[i2].src = photo[i2]; // pre_load2を参照
}
function start_fade2() {
if (document.all) {
document.images.photo3.style.filter="blendTrans(duration=fade_duration)";
document.images.photo3.filters.blendTrans.Apply();
}
document.images.photo3.src = pre_load2[j2].src; // pre_load2を参照
if (document.all) {
document.images.photo3.filters.blendTrans.Play();
}
j2 = j2 + 1;
if (j2 > (p2 - 1)) j2 = 0;
t2 = setTimeout('start_fade2()', 8000);
}


<!-- start_fade2を呼出さないと動かない -->
<body id="top" onLoad="start_fade(); start_fade2();">


ブラウザを選んでしまうのはちょっと残念。今後の課題ということで。
    • good
    • 0
この回答へのお礼

ありがとうございます!
何か所も足りていなかったのですね。
参考に修正したらバッチリ動きました。

No.2の補足もありがとうございます。
大変助かりました!

お礼日時:2011/02/05 14:21

>> pre_load[i] = new Image();



> pre_load[i] = {}; // ここはObjectにすべき

ごめん、勘違い。pre_load[i] = new Image();でよいです。(大汗)
    • good
    • 0

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