jQuery淡入淡出+替换问题

时间:2010-12-31 03:11:00

标签: javascript jquery

我是javasript和jQuery的新手,我正在尝试制作一个简单的脚本来淡出图像并用随机图像替换它。

当下一个要褪色的图像不称为“curImg”时,以下情况有效。我想也许我的nextImg功能无法生成,但它似乎正在准备一个准确的图像位置字符串(为什么我有警报功能)。

在您看到我的错误的任何地方,我都会感激您的帮助!非常感谢,对不起新手级别代码XD。

 $.fn.preload = function() {
        this.each(function(){
            $('<img/>')[0].src = this;
        });
    }

    function nextImg() {
        var curImg = "images/";
        var randomNumber=Math.floor(Math.random()*11)
        curImg += randomNumber;
        curImg += ".jpg";
        alert(curImg);
        $([curImg]).preload();
    }

    nextImg();

    $("document").ready( function() {
        $("#umom1").animate({
            opacity: 0
            }, 1900,function() {
            $("#umom1").attr("src", curImg);
            $("#umom1").animate({
                opacity: 1
                }, 1900);
            });


    });

1 个答案:

答案 0 :(得分:3)

您有一个可变范围问题,curImg未在全局范围内定义,它在本地函数范围内定义,因此您无法从函数本身以外的任何位置访问它。

由于您在var函数中使用了nextImg()关键字,因此变量的生命周期仅限于该函数。

我建议从curImg返回nextImg()变量,如下所示:

function nextImg() {
   var curImg = "images/";
   var randomNumber = Math.floor(Math.random()*11);
   curImg += randomNumber;
   curImg += ".jpg";
   alert(curImg);
   $([curImg]).preload();
   return curImg;
}

您的ready函数应如下所示:

$(document).ready(function() {
    var img = nextImg();
    $("#umom1").fadeOut(1900, function() {
       $("#umom1").attr("src", img);
       $("#umom1").fadeIn(1900);
    });
});