проблемы
var colourValue [ "#fff", "#000", "#FF6600", "#FF00FF", "#FFFF00" ]
var values = [];
values.push(colourValue);
Это очень странный фрагмент кода. Вы определяете массив (на самом деле вы этого не делаете - он пропускает =
) и присваиваете ему некоторые значения, затем создаете другой массив и добавляете каждое из значений первого массива ко второму. Здесь вам не нужно два массива, вы можете просто перебрать исходный массив.
var colorStyle = "#" + value +"";
Это значит ##fff
, что явно не то, что вы хотите. Вы можете просто получить доступ к значению с помощью value
.
$(".nav li:first-child").find("a").css("color",colorStyle);
Это большая проблема. Он проходит по всем элементам values
и на каждой итерации устанавливает для каждой ссылки цвет текущего элемента массива. Однако ваш выбор будет содержать ссылки только в первом элементе li
, что явно не то, что вам нужно. Вам нужно .nav li a
.
Решение
В jQuery есть много хороших способов работы с выборками. Вы, вероятно, хотите что-то вроде этого:
var colourValue = [ "#fff", "#000", "#FF6600", "#FF00FF", "#FFFF00" ]
$('.nav li a').css('color', function(idx) {
return colourValue[idx % colourValue.length];
});
Запускает функцию для каждого элемента в выделении. Функция получает позицию элемента (с 0 индексами) в выборе в качестве первого аргумента (idx
). Использование оператора модуля (%
) таким образом говорит: «верните 0 для первого элемента, 1 для второго ... 4 для пятого, 0 для шестого и т. Д.». Затем вы используете это значение, чтобы найти правильный цвет из массива.
Возвращаемое значение функции устанавливается как значение свойства CSS.
Небольшое замечание: если у вас такое же количество ссылок, которые нужно раскрасить, как вы делаете цвета, операция с модулем не нужна. Вы можете просто использовать return colourValue[idx];
.