Jump to content
  • 0

Смена картинок


DjTarik
 Share

Question

Собственно, вот такой скрипт:

				// The document is loaded -->
onload = function()
{
slideshow.initial(1);
}
// -->

var slideshow = {};

// Slideshow initialization -->
slideshow.initial = function(num)
{
i = num;
if (i>4)
{
i = 1;
}

var image = document.getElementById('SlideShow1');
image.src = 'img/slideshow/img_1-'+i+'.jpg';

image.onload = function()
{
setTimeout(function(){
slideshow.opacity.install('SlideShow1', 'show', 0);
}, 250);
}
image.onerror = function()
{
image.src = 'img/spacer.gif';
}
}
// -->

slideshow.opacity = {};

// Slideshow installation transparency -->
slideshow.opacity.install = function(id, method, value)
{
obj = document.getElementById(id);
opacity = value;

if (method == 'show')
{
slideshow.opacity.show();
}
else if (method == 'hide')
{
slideshow.opacity.hide();
}
}
// -->

// Slideshow transparency show -->
slideshow.opacity.show = function()
{
if (opacity <= 100)
{
opacity+=2;
obj.style.opacity = opacity/100; // for normal browsers -->
obj.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(opacity='+opacity*10+')'; // for ie -->
setTimeout(arguments.callee, 50);
}
else
{
setTimeout(function(){
slideshow.opacity.install('SlideShow1', 'hide', 100);
}, 5000);
}
}
// -->

// Slideshow transparency hide -->
slideshow.opacity.hide = function()
{
if (opacity >= 0)
{
opacity-=2;
obj.style.opacity = opacity/100; // for normal browsers -->
obj.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(opacity='+opacity*10+')'; // for ie -->
setTimeout(arguments.callee, 50);
}
else
{
slideshow.initial(i+1);
}
}
// -->

И сразу линк, на всякий:

http://tarik.kasperovich.ru/test_8/index.html

Всё работает, но не могу понять, как сделать всё это для нескольких картинок сразу.

Делал так:

					setTimeout(function(){
slideshow.opacity.install('SlideShow1', 'show', 0);
slideshow.opacity.install('SlideShow2', 'show', 0);
}, 250);

по-моему конфликтуют таймауты.

Есть функция с таймаутом - я её хочу использовать для разных айдишников.

Спасибо.

Edited by DjTarik
Link to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 0
В этой теме s0rr0w дал ответы на все вопросы, а psywalker все реализовал.

http://forum.htmlbook.ru/index.php?showtopic=21526

а я себе уже сделал. Только в ie не пашет. До всего додумался, всё меня устраивает - а замыкания в ie - так и не получились.

Может ты подскажешь:

			array = ['SlideShow1', 'SlideShow2', 'SlideShow3'];	// array of id -->
for (var i=0; i<array.length; i++)
{
var img = document.getElementById(array[i]);
img.src = 'img/slideshow/'+images[i];

(function(i){ // short circuits -->
img.onload = function()
{
alert(i);
if(i == array.length-1) // last image is loaded -->
{
setTimeout(function(){
slideshow.opacity.install('show', 0);
}, 500);
}
}
})(i);
}

Почему везде alert(i) выведет '0,1,2', а в ie - '0,1'. Без двойки? O_o

Edited by DjTarik
Link to comment
Share on other sites

  • 0
Почему везде alert(i) выведет '0,1,2', а в ie - '0,1'. Без двойки? O_o

Могу лишь предположить, что в ИЕ на третьей итерации вываливается какая-то ошибка и скрипт останавливается, поэтому выводит только 2 алерта. Попробуйте поставить алерт где-нибудь повыше и посмотреть что выдает.

Может проблема в этой строке?

img.src = 'img/slideshow/'+images[i];

Link to comment
Share on other sites

  • 0
Могу лишь предположить, что в ИЕ на третьей итерации вываливается какая-то ошибка и скрипт останавливается, поэтому выводит только 2 алерта. Попробуйте поставить алерт где-нибудь повыше и посмотреть что выдает.

Может проблема в этой строке?

img.src = 'img/slideshow/'+images[i];

я тут подумал, что проблема всё-таки в моем ie. Эмулятор глючит, скорее всего. Теперь вроде всё норм.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy