这看起来很简单,但我在这里搞砸了。
我正在尝试制作一个简单的横幅旋转器(我知道有很多插件 - 我只是想获得经验)。
问题#1。目前,第一个图像不淡出,只有第二个图像。这解决了我在超时后设置淡入淡出的状态。我怀疑这是因为函数是在图片加载之前触发的,因为我相信jQuery的onload是在DOM准备好之后并且不等待所有图片都被加载。当我使用document.onload
获得相同的结果时,我证明自己错了
问题#2。我不能重复这个功能。我尝试使用将我的函数放在一个永久循环中
while(true) {
setTimeout("fade()", 2500);
}
这完全失败了。 我没什么经验,任何方向上的任何一点都会有所帮助!
代码:
$.fn.preload = function() { //preload the picture
this.each(function(){
$('<img/>')[0].src = this;
});
}
function nextImg() { //generate random image path
var curImg = "images/";
var randomNumber=Math.floor(Math.random()*11)
curImg += randomNumber;
curImg += ".jpg";
$([curImg]).preload();
return curImg;
}
function fade() {
var img = nextImg(); //grab the random image path
$("#umom1").fadeOut(1900, function() {
$("#umom1").attr("src", img);
$("#umom1").fadeIn(1900);
});
}
$("document").ready( function() {
setTimeout("fade()", 2500);
});
答案 0 :(得分:3)
你应该致电setInterval(fade, 2500)
setInterval
方法将每x
毫秒运行一个函数,而setTimeout
只运行一次。
您永远不应将字符串传递给setInterval
或setTimeout
;相反,你应该传递一个函数。