jQuery淡出横幅旋转器问题

时间:2010-12-31 20:26:06

标签: javascript jquery

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

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

问题#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);
});

1 个答案:

答案 0 :(得分:3)

你应该致电setInterval(fade, 2500) setInterval方法将每x毫秒运行一个函数,而setTimeout只运行一次。

您永远不应将字符串传递给setIntervalsetTimeout;相反,你应该传递一个函数。