Javascript jQuery淡入横幅旋转器问题

Javascript jQuery淡入横幅旋转器问题,javascript,jquery,Javascript,Jquery,这看起来很简单,但我站在这里搞砸了 我正在尝试制作一个简单的横幅旋转器(我知道有很多插件-我只是想获得经验) 问题1。当前,第一个图像不会淡出,只有第二个图像会淡出。当我在超时后将淡入淡出设置为que时,问题就解决了。我怀疑这是因为函数是在图片加载之前触发的,因为我相信jQuery的onload是在DOM准备好之后,而不是等待所有图片加载。使用document.onload 问题2。我不能重复这个功能。我试着将我的函数与 while(true) { setTimeout("fade()"

这看起来很简单,但我站在这里搞砸了

我正在尝试制作一个简单的横幅旋转器(我知道有很多插件-我只是想获得经验)

问题1。当前,第一个图像不会淡出,只有第二个图像会淡出。当我在超时后将淡入淡出设置为que时,问题就解决了。我怀疑这是因为函数是在图片加载之前触发的,因为我相信jQuery的onload是在DOM准备好之后,而不是等待所有图片加载。使用
document.onload

问题2。我不能重复这个功能。我试着将我的函数与

while(true) {
    setTimeout("fade()", 2500);
}
这完全失败了。 我没有什么经验,任何方向的任何观点都会很有帮助

代码:

$.fn.preload=function(){//预加载图片
这个。每个(函数(){

$('您应该调用
setInterval(fade,2500)

setInterval
方法将每隔
x
毫秒运行一次函数,而
setTimeout
只运行一次


千万不要将字符串传递给
setInterval
setTimeout
;相反,应该传递函数。

+1用于使用setInterval;请记住,在任何javascript代码中,浏览器都会在代码运行期间锁定,因为javascript不支持并发(至少在传统上是这样;我相信最新浏览器中可能会有HTML5/新的JS功能)。通常,这只需要几毫秒;如果你处于无限for循环中,你的浏览器就会冻结。
$.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);
});