javascript - 多个物体不摆动,保持卡住

标签 javascript jquery

当我将鼠标悬停在这两个对象上时,我试图让它们摆动。独立。所以,当我将鼠标悬停在 box1 上时,它会摆动,然后当我远离它时,它会慢慢停止摆动。然而他们俩似乎都僵住了。

谁能明白原因并帮我解决它吗?

这是我的 Js:

(function swing() {
    var ang  = 20,
    dAng = 10,
    ddAng = .5,
    dir  = 1,
    box = document.getElementById("box");

function setAng(ang,div){

if (div == "box") {

    document.getElementById("box").style.WebkitTransform =  'rotate('+ang+'deg)';

    document.getElementById("box").style.MozTransform =  'rotate('+ang+'deg)';
    dir = -dir;
    if (dAng > 1)
        dAng -= ddAng;

    if (Math.abs(ang) > 0) {
        setTimeout(setAng, 1000, dir * (Math.abs(ang)-dAng))
    }

}

if (div == "box2") {

    document.getElementById("box2").style.WebkitTransform =  'rotate('+ang+'deg)';

    document.getElementById("box2").style.MozTransform =  'rotate('+ang+'deg)';
    dir = -dir;
    if (dAng > 1)
        dAng -= ddAng;

    if (Math.abs(ang) > 0) {
        setTimeout(setAng, 1000, dir * (Math.abs(ang)-dAng))
    }

}
};


document.getElementById("box").onmouseover = function(){
    var div = document.getElementById("box");
    document.getElementById("box").style.WebkitTransform =  'rotate(-20deg)';
    document.getElementById("box").style.MozTransform =  'rotate(-20deg)';
    setTimeout(function(){
        setAng(20, "box")
    }, 1000);
}

document.getElementById("box2").onmouseover = function(){
    var div = document.getElementById("box2");
    document.getElementById("box2").style.WebkitTransform =  'rotate(-20deg)';
    document.getElementById("box2").style.MozTransform =  'rotate(-20deg)';
    setTimeout(function(){
        setAng(20, "box2")
    }, 1000);
}


})();

这是 JSFiddle:http://jsfiddle.net/z3s7v/1/

提前谢谢大家:)

最佳答案

您忘记在 setTimeout() 中设置“function()”

function setAng(ang,div){

if (div == "box") {
    document.getElementById("box").style.WebkitTransform =  'rotate('+ang+'deg)';   
    document.getElementById("box").style.MozTransform =  'rotate('+ang+'deg)';
    //document.getElementById("box").style.WebkitTransform =  'rotate('+ang+'deg)';

    dir = -dir;
    if (dAng > 1)
    {
        dAng -= ddAng;              
    }   

    if (Math.abs(ang) > 0) {  
        // Here you have forgot "function()"
        setTimeout(function(){
        setAng(dir * (Math.abs(ang)-dAng), div)
        }, 1000);              
    }

}

它现在可以在你拨弄“盒子”时起作用

关于javascript - 多个物体不摆动,保持卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22719108/

相关文章:

javascript - 如何提高jquery的性能或使用常规替换?

javascript - JavaScript数组真的是map类型吗

所有数字和小数点格式的 Javascript 正则表达式

javascript - 谷歌线图 - 设置较小的幅度

jquery - 被 CORS 策略阻止 : Request header field access-control-allow-origin is not allowed

javascript - jQuery 的 stop() 似乎阻止了尚未排队的动画

jquery ui datepicker 在 IE 6.0 中无法正确渲染(显示)

javascript - 在更改图像 src 时提供 fadeIn fadeOut 效果

javascript - JWPlayer 播放完视频后等待 5 秒执行操作

javascript - 在 Javascript 中处理相机式鼠标移动(启用连续鼠标移动)