Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.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
Javascript 如何保存原始div position()以供以后使用?_Javascript_Jquery_Gsap - Fatal编程技术网

Javascript 如何保存原始div position()以供以后使用?

Javascript 如何保存原始div position()以供以后使用?,javascript,jquery,gsap,Javascript,Jquery,Gsap,我目前正在用GSAPJS库运行一个动画序列 在运行动画的第一个实例之后,我运行了一个onComplete函数,为\myDiv保存当前的位置() 然后,我尝试在动画的最后一个实例中使用coordX值,但它只是显示为:无效的左二值:未定义 有什么想法吗 var coordX; function regPosition() { coordX = $("#mydiv").position().left; } function animationStart() { //Initiate

我目前正在用GSAPJS库运行一个动画序列

在运行动画的第一个实例之后,我运行了一个
onComplete
函数,为
\myDiv
保存当前的
位置()

然后,我尝试在动画的最后一个实例中使用
coordX
值,但它只是显示为:无效的左二值:未定义

有什么想法吗

var coordX;

function regPosition() {
    coordX = $("#mydiv").position().left;
}

function animationStart() {
    //Initiate animation with onComplete
    tl.to("#mydiv", 0.5, {borderRadius:"50%", width: "35%", onComplete: regPosition})

    //Move #myDiv to another position than registered    
    .to("#mydiv", 0.5, {left: 1000})

    //try to use the original position stored in "coordX"
    .fromTo("#mydiv", 1.5, {left:-800}, {left:coordX});
}
animationStart();

在第一个
.to
完成后实际调用
onComplete
之前,不会设置
coordX
的值。在此之前,该值是未定义的

因此,问题是在定义时,
coordX
的值是
undefined
,这是您分配给
left
的值。因此,当计算
.to
时,它会看到一个
未定义的值

也许更好的方法是在
onComplete
中启动反向动画:

function animationStart() {
    tl.to("#mydiv", 0.5, {
        borderRadius:"50%", 
        width: "35%", 
        onComplete: function() {
            var coordX = regPosition();
            tl.to("#mydiv", 0.5, {left: 1000})
              .fromTo("#mydiv", 1.5, {left:-800}, {left: coordX});
        }
    })
}

您的代码在计时方面存在一些逻辑问题。执行每个步骤都需要一些时间,在完成所有步骤之前,不会调用
onComplete
函数。在启动动画之前,不要使用
onComplete
回调,只需保存
coordX
,并在动画完成后使用。

创建一个变量,将位置介绍保存到此处,稍后使用。。
我更喜欢.offset()…

@IliaRostovtsev谢谢:)啊,是的,好主意Vivin-这会让它工作得很好,谢谢你的贡献!如果这个答案附带一个代码片段,说明如何实现这一点,那么它将更有帮助