gpt4 book ai didi

javascript - animationend 在递归函数中不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 03:25:28 26 4
gpt4 key购买 nike

我有下面的函数,我想用它循环遍历存储在数组中的每个 id,它指向我添加到 div 的动态 HTML 元素。然后,我想更改 CSS 类并添加一个 animationend 事件监听器。一切正常,除了我注意到事件在动画完成之前触发。最终发生的是数组中的所有元素同时进行动画处理。我希望每个元素都连续动画。我一直在研究代码并在网上寻找答案,但我被卡住了。有什么想法吗?

Javascript 代码:

        function moveLines(count){
if(count<=introLinesBlurEls.length){
thisMoveLine = document.getElementById(introLinesBlurEls[count]);
thisMoveLine.className = 'introImgBlurAnimate';
count++;
thisMoveLine.addEventListener('animationend', moveLines(count), false);
}else{
alert('Hey. I am done.');
}
}

最佳答案

您正在执行您的处理程序,您要在其中分配它。

thisMoveLine.addEventListener('animationend', moveLines(count), false);

这是在执行 moveLines()。您需要推迟 moveLines 的执行,直到事件发生。为此,您需要创建一个闭包,以便您可以绑定(bind)计数参数。

thisMoveLine.addEventListener('animationend', moveLines.bind(this, count), false);

您可以使用 .bind() 或将其包装在函数中以保留作用域

thisMoveLine.addEventListener('animationend', function(){ moveLines(count); }, false);

关于javascript - animationend 在递归函数中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27130722/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com