问题是,在你的淡出完成后i设置为 3。所以你必须添加一个闭包:
var textarr = new Array();
textarr[0] = "Hello, my name is Barry.";
textarr[1] = "I am a designer in Tokyo";
textarr[2] = "I like stuff.";
changetolang = "jp";
for (var i = 0; i < textarr.length; i++) {
(function (index) {
$('#text' + index).fadeOut("slow", function () {
$(this).html(textarr[index]).fadeIn();
});
}(i));
}
http://jsfiddle.net/DKYN9/9/
另一种方法是返回具有正确范围的函数:
var textarr = new Array();
textarr[0] = "Hello, my name is Barry.";
textarr[1] = "I am a designer in Tokyo";
textarr[2] = "I like stuff.";
function fadeIn(i) {
return function () {
$(this).html(textarr[i]).fadeIn();
};
}
for (var i = 0; i < textarr.length; i++) {
$('#text' + i).fadeOut("slow", fadeIn(i));
}
http://jsfiddle.net/DKYN9/12/