JQuery Javascript循环问题
JQuery-Javascript looping issue
我正在为一个网站制作横幅,我需要它来循环浏览图像。我的问题是,它在图像中播放一次,然后停止。我试过了我能想到的一切,但都没有成功。我相信这比我做的要简单,但如果能提供一些帮助,我们将不胜感激。下面是最新版本。
$(document).ready(function(){
// Variables required by script
var currentimage;
// Load Gallery XML file
$.ajax({
url: 'banner.xml',
type: 'GET',
dataType: 'xml',
error: function(){
alert('Error loading XML document');
},
success: function(xmlData){
// do something with xml
setupImages(xmlData);
}
});
// Display images
function setupImages(xmlData) {
// read xml and use it to populate page
//get first image
currentimage = $(xmlData).find("image:first");
// Fade in image after countdown
var t = setTimeout(function(){showNewImage()}, 1000);
}
// Display the image, caption, rating and label
function showNewImage() {
var image = $(currentimage).find("path").text();
var caption = $(currentimage).find("caption").text();
$("#imagelabel").removeClass("active");
// Fade out current image and fade in new image
$("#bannerimgholder").animate({opacity:0},500,
function(){
$(this).css({"backgroundImage":"url("+image+")"}).animate({opacity:1},1000,
function(){
$("#imagelabel").addClass("active");
});
});
// Add caption
$("#imagelabel").text(caption);
var to = setTimeout(function(){getNextImage()}, 5000);
}
function getNextImage(){
var tmp = $(currentimage).next();
if ($(tmp).find("path").text()=="") {
currentimage = $(xmlData).find("image:first");
} else {
currentimage = tmp;
}
showNewImage();
}
});
您的代码使用next()
,一旦到达最后一个图像,它将不返回任何内容。
您需要使用不同的测试来结束循环,例如:
tmp.length==0
请注意,tmp已经是一个jQuery对象,因此不需要将其封装在$((中。
本页提供了一个nextOrFirst((函数的示例,该函数可以执行您想要的操作。
这是我提出的一个解决方案。
首先,我在xml文件的末尾添加了一个元素,其中只有一个"path"属性"last"。
接下来,我添加以下变量来保存第一个元素的路径名:
var imagepathtext;
然后,在setupImages(xmlData(函数中,我添加了以下内容:
imagepathtext = $(currentimage).find("path").text();
最后,我从更改了getNextImage((函数
function getNextImage(){
var tmp = $(currentimage).next();
if ($(tmp).find("path").text()=="") {
currentimage = $(xmlData).find("image:first");
} else {
currentimage = tmp;
}
showNewImage();
}
至
function getNextImage(){
var tmp = $(currentimage).next();
if ($(tmp).find("path").text()=="last") {
while ($(tmp).find("path").text()!=firstimagepath)
{
var tmp1 = $(tmp).prev();
tmp = tmp1;
}
currentimage = tmp;
} else {
currentimage = tmp;
}
showNewImage();
}
就像魔术一样,它现在正确地循环了!
相关文章:
- setInterval游戏循环的范围问题
- 在循环中附加事件处理程序时出现浏览器性能问题
- 动画、计时和运行循环等问题
- jQuery通过步骤的自排队循环来解决延迟问题
- '对于'循环,替换span标记的问题
- 循环的JavaScript排序问题
- HTML5音频循环出现问题
- 在qualtrics上使用javascript:循环块中的问题id
- 用于异步函数中的循环和定时问题
- Jquery图像循环问题
- I'我在react.js中编写for循环时遇到问题
- JavaScript + mocha:可能是在 for 循环中声明函数的闭包问题
- 循环映像 IE7 问题
- 循环的 JavaScript 性能问题
- 无限循环串联问题
- 循环 += 十进制变量的 javascript 有问题
- JavaScript的循环问题,将值插入数组将不起作用
- …的奇怪问题..循环中
- Ajax / Javascript问题.循环以前的请求
- 问题循环简单的javascript幻灯片与链接