我在向匿名函数传递参数时遇到了麻烦。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);
}
});
}