我正在用传呼机做一些旋转木马。轮播显示元素6到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。我可以使用
(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);
...