然后数组长度变为0,如果低于0则返回最后一个长度

时间:2017-01-22 09:54:13

标签: jquery

function FontMenu(font_number){
  // Font family
var fontFamily = ["Arial", "Georgia", "Crushed", "Trochut", "Anton", "Monoton"];

var counter = font_number;

this.font = fontFamily;
this.counter = counter;
}

FontMenu.prototype._Left = function (){
  this.counter--;
  alert(this.font[this.counter]);
}

FontMenu.prototype._Right = function (){
  this.counter++;
  alert(this.font[this.counter]);
}

我有左键和右键,当用户点击它会检查数组,让我们说font_number为0,fontfamily长度为6,当我按下右键,this.counter ++,当它超过fontfamily时它不会回到0,与this.counter相同 - 当它变为0时我希望它转到最后一个fontFamily长度。

对不起,如果我的问题很清楚。感谢帮助,简单,好像多于6回到0,如果低于0那么回到最后的长度。

但是有没有使用if语句的简单方法?

1 个答案:

答案 0 :(得分:2)

是的 - 你可以使用模运算。

增量很简单:向计数器添加一个,然后将结果的其余部分取模为列表的长度。

FontMenu.prototype._Right = function() {
  this.counter = (this.counter + 1) % this.font.length;
};

除了从计数器中减去一个之外,递减几乎相同。您还需要添加列表的长度以确保左操作数是非负的。以与以前一样的方式将结果作为列表长度的模数。

FontMenu.prototype._Left = function() {
  this.counter = (this.counter + this.font.length - 1) % this.font.length;
};

一些资源: