我在下面有这个脚本,我希望它遍历每个锚点并给出背景
$c = ['85CC4C', 'D1FFCD', 'FF8D9D', '8A5949', 'CC8066'];
$('a').each(function(i){
$(this).css({'background':'#'+$c[i], 'color':getTintedColor($c[i], -55)});
});
为什么它在通过数组颜色后停止?我希望它重复 5 种颜色。
我在下面有这个脚本,我希望它遍历每个锚点并给出背景
$c = ['85CC4C', 'D1FFCD', 'FF8D9D', '8A5949', 'CC8066'];
$('a').each(function(i){
$(this).css({'background':'#'+$c[i], 'color':getTintedColor($c[i], -55)});
});
为什么它在通过数组颜色后停止?我希望它重复 5 种颜色。
如果要循环显示颜色,请尝试$c[i % 5]
代替$c[i]
:
$c = ['85CC4C', 'D1FFCD', 'FF8D9D', '8A5949', 'CC8066'];
$('a').each(function(i){
$(this).css({'background':'#'+$c[i % 5], 'color':getTintedColor($c[i % 5], -55)});
});
在each()
循环内部,i
变量是每个锚标记的索引。但是,您的颜色数组只有 5 种颜色。Usingi % 5
将始终给出一个介于0
和之间的数字4
,因此始终是颜色数组中的有效索引。
为什么它在通过数组颜色后停止?
因为$c[i]
then 产生undefined
, 而不是从零开始索引。您可以使用模运算符来执行此操作:
$('a').each(function(i){
var col = $c[i % $c.length];
$(this).css({
background: '#'+col,
color: getTintedColor(col, -55)
});
});
因为如果i
值大于数组的长度,$c[i] 是未定义的..
数组有 5 个项目,您正在尝试分配anchor
6 个项目的值。
所以当长度大于数组时需要重新设置值(需要使用模运算符)。像这样的东西
$c = ['85CC4C', 'D1FFCD', 'FF8D9D', '8A5949', 'CC8066'];
$('a').each(function (i) {
$(this).css({
'background': '#' + $c[i % $c.length],
'color': getTintedColor($c[i % $c.length], -55)
});
});