Я делаю простой цикл прокрутки изображений, первое изображение проходит через экран просто отлично, но ничего не следует, я использую "это" неправильно? Код:
var width = $(window).width();
var height = $(window).height();
var size = (height + width)/2;
$( document ).ready(function()
{
$('#pictureFrame').children('img').each(function(){$(this).css('left', '100%')});
});
window.onload = function(){startSlideshow($('#pictureFrame > img'))};
function startSlideshow(myobj) {
$(myobj).next().animate({left: "-=" + (width + 2000)},{
duration: 30000,
queue: false,
easing: 'linear',
complete: function() {
$(myobj).css('left', '100%')
}
});
time = ($(this).width()* 10)/(width + 2000);
setTimeout(startSlideshow($(this)),time);
}
HTML:
<div id="pictureFrame">
<img class="slideshow" src="img1.jpg">
<img class="slideshow" src="img2.jpg">
<img class="slideshow" src="img3.jpg">
<img class="slideshow" src="img4.jpg">
</div>
Я думаю, что что-то вроде этого ближе к тому, что вы хотите:
window.onload = function() {
startSlideshow($('#pictureFrame > img:first'))
};
function startSlideshow(myobj) {
myobj.animate({left: "-=" + (width + 2000)},{
duration: 30000,
queue: false,
easing: 'linear',
complete: function() {
$(myobj).css('left', '100%')
}
});
var next = myobj.next();
if (!next.length) {
next = myobj.siblings().first();
}
time = ($(this).width()* 10)/(width + 2000);
setTimeout(function() {
startSlideshow(next)
}, time);
}
Каждый вызов startSlideshow
переходит к следующему изображению в DIV. Когда он закончится, он вернется к первому.
setTimeout()
не будет работать. все изображения начинают двигаться одновременно, даже если я использую целое число, например, 5, а не time
.
startSlideshow($('#pictureFrame > img:first'))
??? В вашем коде$(myobj)
- это все изображения, а не только одно. И вам нужно проксифицировать контекст на время ожидания. Кстати, ваш синтаксис тайм-аута здесь неправильныйstartSlideshow
естьwindow
как егоthis
объект. Это, вероятно, не то, что вы хотели.