Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery-animate+;在for cycle的队列中显示()_Jquery - Fatal编程技术网

jQuery-animate+;在for cycle的队列中显示()

jQuery-animate+;在for cycle的队列中显示(),jquery,Jquery,我有一个非常具体的问题,我甚至不知道在谷歌上找什么。。。 我正在尝试创建一个动画字母。在一个单独的标记中有一支笔和5行,它们都在一个容器元素中,相对定位,有它们自己的ID,并且这些行是隐藏的(都在它们应该出现的地方)。动画是这样的:画笔沿对角线移动,出现一条线,画笔移动到新行的开头,重复5次,画笔回到默认位置,线条消失。 我不想分别为所有5个周期编写动画代码,所以我使用for循环将动画插入到队列中。一切正常,除了最愚蠢的事情——我无法显示当前的行号。代码如下: var penAnimating

我有一个非常具体的问题,我甚至不知道在谷歌上找什么。。。 我正在尝试创建一个动画字母。在一个单独的标记中有一支笔和5行,它们都在一个容器元素中,相对定位,有它们自己的ID,并且这些行是隐藏的(都在它们应该出现的地方)。动画是这样的:画笔沿对角线移动,出现一条线,画笔移动到新行的开头,重复5次,画笔回到默认位置,线条消失。 我不想分别为所有5个周期编写动画代码,所以我使用for循环将动画插入到队列中。一切正常,除了最愚蠢的事情——我无法显示当前的行号。代码如下:

var penAnimating = false;

function animateLetter() {
    var pen = $('#form_decor_pen');
    var startRight = pen.css('right');
    var startTop = pen.css('top');

    if (!penAnimating) {
        penAnimating = true;

        for (var i=1; i<=5; i++) {
            pen.animate( {
                right: '-=26',
                top: '-=10',
            },{ 
                duration: 600,
                queue: 'penAnimation'
            });
问题是,我总是输出5—循环结束时的数字

            if (i<5) {
                pen.animate({
                    right: '+=26',
                    top: '+=20',
                   },{
                    duration: 300,
                    queue: 'penAnimation'
                });
            } else {
                pen.animate({
                    right: startRight,
                    top: startTop,
                   },{
                    duration: 300,
                    queue: 'penAnimation',
                    complete: function() {
                        penAnimating = false;
                    }
                });
            }​
         }
       pen.dequeue('penAnimation');
    }
}

if(i当您有一个for循环,其中包含异步调用时,for变量的值将是最后一个值。除非您将代码放入闭包中

将for循环更改为for-loop-with-a-closure

    for (var i=1; i<=5; i++) { 
    (function(i){
    // the second i is now in a closure.
    })(i);
    }

用于(VaR i=1;iNoNo有任何想法吗?好像这个数字在循环之后被插入队列中。但是为什么?我是如何克服这个问题的?谢谢指点我正确的方向,但是我仍然不知道如何精确地实现它。请您具体说明我应该怎样编辑中间部分中的代码才能工作?我试过SEV。有很多种方法,但都不能用。你还需要什么吗?
    for (var i=1; i<=5; i++) { 
    (function(i){
    // the second i is now in a closure.
    })(i);
    }