javascript - 将索引保持在范围内并环绕

标签 javascript

我正在用寻呼机做一个小旋转木马。旋转木马显示元素 6 x 6,我有 36 个元素要显示。我有一个下一个和上一个按钮。显示的第一个元素是 [0, 6]。如果我按下上一个按钮并且没有上一个元素(例如我在第一页),它应该环绕并走到最后。这同样适用于最后一个元素和下一个按钮。

我的代码是这样的:

$('#img_prev').click(function (e) {
    # change this line so it wraps around
    imgIndex = (imgIndex - 6) % 36;
    alert(imgIndex)
    refreshImages(imgIndex);
    e.preventDefault();
    return false;
});
$('#img_next').click(function (e) {
    imgIndex = (imgIndex + 6) % 36;
    refreshImages(imgIndex);
    e.preventDefault();
    return false;
});

它悲惨地失败了,因为 -6 % 36 是 -6 而不是 30。我可以用 if (index < 0) ... 处理它但我更喜欢模数最能捕捉包装行为的条件。

我怎样才能让它环绕(见第二行)?

最佳答案

一个可能的解决方案是使用 this answer :

function mod(x, m) {
    return (x%m + m)%m;
}

$('#img_prev').click(function (e) {
    # this line has been changed, now it wraps around
    imgIndex = mod(imgIndex - 6, 36);
    ...

关于javascript - 将索引保持在范围内并环绕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16964225/

相关文章:

javascript - 如何解决错误:接近堆限制的无效标记压缩分配失败-应用程序中的JavaScript堆内存不足

javascript - 如何设置点击时文件/图像的名称 'Save Image As'

javascript - 与 webpack 捆绑 - 脚本禁用错误

javascript - 如何测试关联数组中的所有值是否都为 true? (Javascript)

javascript - 隐藏后div框能否顺利重新排列,如何?

javascript - 将路径移到前面会更改选择吗?

javascript - 使用javascript删除没有值的数组项

javascript - ng-repeat limit 使删除成为问题

javascript - NodeJS 两个 "Require"参数

javascript - 在cshtml中编码特殊字符