我有一个数组getBgColor()
。
我想使用这些颜色更改网站的背景颜色。但我不想从这个数组中随机抽取颜色。我想按顺序迭代它。
因此,如果我使用red
获取网站的背景颜色并打印setBgColor(currentColor)
,那么我需要一个函数yellow
来打印function setBgColor(currentColor) {
var array = ['green', 'red', 'yellow', 'blue'];
newColor = array[array.indexOf(currentColor) + 1];
}
。我该怎么做?
我想我应该做点像
$.ajax({
url: "http://mysitedotcom/blog/json",
dataType: "jsonp",
success: jsonpCallback
});
function jsonpCallback(data) {
console.log(data);
}
但这是正确的做法吗?我如何确保从蓝色变为绿色,从而不超过阵列的长度?
答案 0 :(得分:5)
您可以将modulo %
与数组的长度一起使用。
function setBgColor(currentColor) {
var array = ['green', 'red', 'yellow', 'blue'],
newColor = array[(array.indexOf(currentColor) + 1) % array.length ];
// set the new color
// ...
}
答案 1 :(得分:0)
只需在您的号码中添加条件即可添加:
var array = ['green', 'red', 'yellow', 'blue'],
last_index = array.length - 1,
thisIndex = array.indexOf(currentColor);
return array[thisIndex + (thisIndex !== last_index ? 1 : (-1 * last_index))];
答案 2 :(得分:0)
使用包含当前索引的变量,而不是搜索数组中的颜色。使用模运算来增加索引,以数组大小包围。
var colorIndex = 0;
var colorArray = ['green', 'red', 'yellow', 'blue'];
function setBgColor() {
colorIndex = (colorIndex + 1) % array.length;
return colorArray[colorIndex];
}