查找值的逻辑条件问题在于哪个逻辑集

时间:2013-04-24 10:20:09

标签: javascript jquery

我们的产品中实现了通用滑块功能。我们需要从URL读取项索引值并滚动滑块以显示活动项。

以下代码逻辑用于显示活动缩略图,为此我需要将DIV设置为负向左侧。

首先,我们从URL哈希值中获取总缩略图项目,然后获取活动项目的索引(即#slide = 7)。一套至少包含5个项目。需要将滑块宽度乘以ActiveItemIndex所在的页面设置值。

Javascript代码 -

showActiveThumbnailOnPageLoad : function() {
    var _this = this,
        totalThumbnails = $('.slidetabs a').length,
        activeItem = window.location.href.split('=')[1],
        scrollAmount;

    if(activeItem > 5 && activeItem <= 10) {
        scrollAmount = '-=' + 772
    } else if(activeItem > 10 && activeItem <= 15) {
        scrollAmount = '-=' + 772 * 2
    } else if(activeItem > 15 && activeItem <= 20) {
        scrollAmount = '-=' + 772 * 3
    }

    $('.slidetabs').stop().animate({
        left : scrollAmount
    });
}

截至目前,使用的硬编码条件最多可支持20个项目。任何有助于使此代码支持n个项目的帮助。我的意思是说没有硬代码值的通用代码。

提前致谢。

3 个答案:

答案 0 :(得分:2)

您可以尝试:

scrollAmount = '-=' + 772 * ~~((activeItem - 1) / 5);

答案 1 :(得分:1)

使用此:

scrollAmount = '-=' + 772 * Math.floor((((activeItem > 0) ? activeItem : 1)  - 1) / 5);

答案 2 :(得分:0)

试试这个:

scrollAmount = '-=' + 772 * ((activeItem  - 1) / 5);

编辑(基于this commentthis answer

绕过师:

scrollAmount = '-=' + 772 * (((activeItem  - 1) / 5) >> 0);

或者:

scrollAmount = '-=' + 772 * (~~((activeItem - 1) / 5));