Javascript 尝试延迟for循环直到加载div

Javascript 尝试延迟for循环直到加载div,javascript,jquery,Javascript,Jquery,我在一个页面上随意加载和移动div元素。我试着在一个字符串中淡入淡出,然后将其反转。反向循环需要等到初始淡入循环完成之后。这是我到目前为止所做的,但它没有执行反向循环。我想是因为它还看不到初始div var string_to_reverse = "Reverse", i; for (i = 0; i < string_to_reverse.length; i++) { $("<div>" + string_to_reverse[i] + "</div>"

我在一个页面上随意加载和移动div元素。我试着在一个字符串中淡入淡出,然后将其反转。反向循环需要等到初始淡入循环完成之后。这是我到目前为止所做的,但它没有执行反向循环。我想是因为它还看不到初始div

var string_to_reverse = "Reverse",
i;

for (i = 0; i < string_to_reverse.length; i++) {
    $("<div>" + string_to_reverse[i] + "</div>").hide()
        .appendTo("body").delay(500 * i).fadeIn(1000);
}

$("body div:last").load(function () {
    for (i = 1; i <= $("body div").length; i++) {
        $("body div:eq(" + i + ")").detach().prependTo($("body"));
    }
});
var string\u to\u reverse=“reverse”,
我
对于(i=0;i对于(i=1;i一个div上没有load事件,因此
$(“body div:last”)。load
不会做任何事情。您可以将函数传递给fadeIn,以便在操作完成后激发。尝试将回调添加到最后一个动画div。有点混乱,但我相信您可以清理它

var string_to_reverse = "Reverse",
i;

for (i = 0; i < string_to_reverse.length; i++) {
    var dummy = function(){};
    $("<div>" + string_to_reverse[i] + "</div>").hide()
        .appendTo("body").delay(500 * i).fadeIn(1000, (i == string_to_reverse.length - 1)?rev:dummy);
}

function rev () {console.log('rev');
    for (var i = 1; i <= $("body div").length; i++) {
        $("body div:eq(" + i + ")").detach().prependTo($("body"));
    }
}
var string\u to\u reverse=“reverse”,
我
对于(i=0;i因为(var i=1;i你试图做的是错误的:你不知道某件事需要多少时间(你只能猜测,有时只是有根据的猜测,但仍然是猜测)

不要依赖当前的方法,请看一看基于事件的编程方法。在您的情况下,可以使用事件处理程序(例如,如果您正在加载一些外部内容,则使用“
onload
”事件处理程序)或更高阶的函数(使用在执行某些操作后调用的回调,也可能通过将它们作为vent处理程序的一部分附加)

更多阅读:

  • ,

你能不能请它?在fadein中放一个回调,每次增加一个计数器。当计数器等于你的长度时,执行另一个for loopTip:jQuery库中有一个空函数,所以你不需要定义自己的函数。谢谢你的输入。根据你的建议,我将阅读事件驱动JavaScript。