Javascript Jquery随机滑块不';不显示json数组中的所有图像
Javascript Jquery随机滑块不';不显示json数组中的所有图像,javascript,jquery,Javascript,Jquery,我正在编写我的第一个jquery代码,我必须编写一个随机滑块,它将通过一个php函数获取图像,并以一个带有装饰的序列显示它们。随机的事情是在php中完成的。我的jquery如下所示 function bannerSlide(){ $.ajax({ type: "GET", url: "test.php", dataType: 'json', success: function(images) { $.each(images, function
我正在编写我的第一个jquery代码,我必须编写一个随机滑块,它将通过一个php函数获取图像,并以一个带有装饰的序列显示它们。随机的事情是在php中完成的。我的jquery如下所示
function bannerSlide(){
$.ajax({
type: "GET",
url: "test.php",
dataType: 'json',
success: function(images) {
$.each(images, function (index, value) {
$('#banner').slideUp(500).delay(2000).fadeIn(500).css('background', 'url(ItemPictures/'+value+')');
});
}
});
}
我在images
数组中获取图像,并在其中循环。
我面临的问题是,我的这段代码只显示数组中的最后一个图像。其他图像不会显示,它会不断滑动阵列的最后一个图像。
但是,如果我在$中放入警报
语句,则每个
函数在单击警报框的“确定”后图像都会发生变化,警报框将继续
我们将非常感谢您的帮助。请不要建议使用一些已经构建好的滑块。问题是您正在迭代图像数组,并且为每个图像设置相同DOM元素的背景<代码>$(“#横幅”)。这将发生得如此之快,以至于您只能在迭代结束时看到最后一张图像。这也是为什么如果您在两者之间执行
alert()
,您可以看到它会发生变化,因为执行在alert()
期间暂停
你得想办法推迟背景的改变。您可以尝试的一件事是在slideUp()之前添加一个递增的延迟()。比如:
function bannerSlide(){
$.ajax({
type: "GET",
url: "test.php",
dataType: 'json',
success: function(images) {
var duration = 2000;
var element = $('#banner');
$.each(images, function (index, value) {
element.delay(index * duration).slideUp(500).delay(duration).fadeIn(500).css('background', 'url(ItemPictures/'+value+')');
initialDelay += duration;
});
}
});
}
这是一个丑陋的破解,但这就是为什么那些已经构建的滑块存在:)每个循环将在微秒内运行,并在每次通过代码时立即设置css值。因此,您只能看到最后一幅图像
下面是一个使用setTimeout
并在第一个动画的回调中更改css的解决方案,这样css只能在适当的时间更改。您可能需要调整超时间隔索引*3000
$.each(images, function(index, value) {
setTimeout(function() {
$('#banner').slideUp(500, function() {
/* use callback of animation to change element properties */
$(this).delay(2000).fadeIn(500).css('background', 'url(ItemPictures/'+value+')');
})
}, index * 3000);
});
使用元素的文本更改演示以下代码是发布问题的解决方案
function bannerSlide(){
$.ajax({
type: "GET",
url: "test.php",
dataType: 'json',
success: function(imgs) {
var cnt = imgs.length;
$(function() {
setInterval(Slider, 3000);
});
function Slider() {
$('#imageSlide').fadeOut("slow", function() {
$(this).attr('src', 'ItemPictures/'+imgs[(imgs.length++) % cnt]).fadeIn("slow");
});
}
}
});
}
其中,imageSlide
是“banner”“div”内img标签的id