for循环在javascript中捕获200的倍数

时间:2013-10-05 16:49:43

标签: javascript jquery

我目前有这个代码检查导航的左边距,并相应地向左滚动。但是,这个方法很慢,所以我想知道如何将它更改为for循环或类似的东西来捕获200的每个倍数,然后相应地为导航设置动画。
这是我目前的代码,因为如果需要达到-5000等,你可以说效率不高 修改
这些是我的功能,但它们不起作用

    function goleft(){
    var nav = $("#innernavigation");
    var navmargin = parseInt(nav.css("margin-left"), 10);
    if (navmargin != 0)
    {
        //time!
        if (navmargin > -nav.width() && navmargin < -200)
        {   
            nav.animate({'marginLeft':'-' + ((Math.floor(navmargin / 200)-1) * 200) + 'px'});
        }
        if (navmargin > 0)
        {
            nav.css({'marginLeft':'0px'});
        }
    }
}
function goright(){
    var nav = $("#innernavigation");
    var navmargin = parseInt(nav.css("margin-left"), 10);
    if (navmargin != -nav.width())
    {
        //time!
        if (navmargin > 0 && navmargin < -nav.width())
        {   
            nav.animate({'marginLeft':'-' + ((Math.floor(navmargin / 200)-1) * 200) + 'px'});
        }
        if (navmargin < -nav.width())
        {
            nav.css({'marginLeft':'-' + nav.width()});
        }
    }
}

3 个答案:

答案 0 :(得分:2)

您可以在单个if语句中执行类似的操作。

if (navmargin > -5000 && navmargin < -200)
{
    nav.animate({'marginLeft': (-((Math.floor(navmargin / 200)-1) * 200) + 'px'});
}

答案 1 :(得分:0)

nav.animate({'marginLeft': (Math.floor(Math.abs(navmargin) / 200) * -200) + 'px'})

答案 2 :(得分:0)

快速猜测(尚未测试):

if (navmargin<-200 && navmargin>-5000) {
    nav.animate({'marginLeft':((navmargin%200-1)*-200)+'px'});
}