sanek_os9
@sanek_os9
Работаю с Laravel, Vue, Vuetify, AWS Amazon, Linux

Как достать следующий элемент массива?

Есть поле input c заданным цветом фона в css, по клику сейчас рандомно подставляется цвет
$('#typeProject').click(function(){
            var colors = ['green', 'red', 'blue', 'yellow'];
            var key = Math.round(Math.random()*(colors.length-1))
            $('.typeProject').css('background-color', colors[key]);
            console.log(key);
        });

Как сделать так что цвет брался не рандомно а последовательно? Сначала зеленый, еще раз кликнули, красный, и так далее.
  • Вопрос задан
  • 362 просмотра
Решения вопроса 4
Bobert88
@Bobert88
Vice President of Javascript, very important guy.
Можно попробовать так: https://codepen.io/glebez/pen/mMPqbW
Ответ написан
0xD34F
@0xD34F Куратор тега JavaScript
function* cyclicSequence(items) {
  for (var i = 0; ; i = (i + 1) % items.length) {
    yield items[i];
  }
}

var color = cyclicSequence([ 'green', 'red', 'blue', 'yellow' ]);

$('#typeProject').click(function() {
  $('.typeProject').css('background-color', color.next().value);
});
Ответ написан
@choupa
Архитектор (обычный, который строит)
Сделать key глобальной переменной и брать

key = (key+1) % colors.length
Ответ написан
twobomb
@twobomb
$('#typeProject').click(function(){
						if(!$(".typeProject").attr("data-numcolor"))
           	 	$(".typeProject").attr("data-numcolor",0);
            var colors = ['green', 'red', 'blue', 'yellow'];
            var num = $(".typeProject").attr("data-numcolor");
            $('.typeProject').css('background-color', colors[num++]);
            num %= colors.length;
            	$(".typeProject").attr("data-numcolor",num);
        });
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы