传递参数给匿名函数undefined jquery



我在向匿名函数传递参数时遇到了麻烦。Images是一个文件名数组。我确信它是在我试图传递它之前定义的,并且在下面的匿名函数中它是未定义的。这是怎么回事?我很抱歉没有详细说明。使用jquery 1.9

function setup_slideshow(){
$('#slide1').fadeOut(0);
$('#slide0').fadeIn(0);
$.ajax({
    url: "/inc/phplib/fetch_images.php",
    async: true,
    // Receives a string with a colon separated list of filenames (images)
    complete: function(data){
        var images = data.responseText.split(":");
        $('#slide0').attr("src", images[0]);
        $('#slide1').attr("src", images[1]);
        var t = setTimeout(function(images){
            move_slideshow(images, 2, 1);
        }, 550);
    }
});
}

try

   var images = data.responseText.split(":");
    $('#slide0').attr("src", images[0]);
    $('#slide1').attr("src", images[1]);
    var t = setTimeout(function(){
        move_slideshow(images, 2, 1);
    }, 550);

你不需要将图像数组传递给setTimeout,因为它在更高的作用域中,并且可以在setTimeout回调中访问

你写的是// Receives a string with a comma separated list of filenames (images)

但是你用的是var images = data.responseText.split(":");,应该是var images = data.responseText.split(",");

完整代码

function setup_slideshow(){
  $('#slide1').fadeOut(0);
  $('#slide0').fadeIn(0);
  $.ajax({
    url: "/inc/phplib/fetch_images.php",
    async: true,
    // Receives a string with a comma separated list of filenames (images)
    success: function(data){
        alert(data); //to check what you get in data
        var images = data.split(":");
        $('#slide0').attr("src", images[0]);
        $('#slide1').attr("src", images[1]);
        var t = setTimeout(function(images){
            move_slideshow(images, 2, 1);
        }, 550);
    }
  });
}

最新更新