изменить фоновое изображение в цикле

Я хочу изменить фоновое изображение страницы с помощью jQuery onclick будет выглядеть так:

var colors = ['blue', 'green', 'yellow', 'black'];
$('#click').click(function(){
    $('body').css('background', colors[1]);
})

но я хочу изменить его автоматически, используя некоторую функцию «jQuery», моя попытка до сих пор такова:

var colors = ['blue', 'green', 'yellow', 'black'];

$.each(colors, function(color){
    setTimeout(function(){$('body').css('background', color)}, 1000);
});

но это не сработает, любая помощь будет оценена

1
nl ja de
Определите, что «не работает», пожалуйста.
добавлено автор Jan Hančič, источник
[ stackoverflow.com/questions/6787359/… [1]: jQuery "> stackoverflow.com/questions/6787359/…
добавлено автор SQLGuru, источник

2 ответы

Вы можете сделать это :

var colors = ['blue', 'green', 'yellow', 'black'];

$.each(colors, function(i, color){
    setTimeout(function(){$('body').css('background', color)}, (i+1)*1000);
});

Я сделал два изменения:

  • первым аргументом, заданным для обратного вызова, является индекс, а не элемент массива
  • Я даю разные задержки с помощью индекса для вычисления задержки
2
добавлено
+1 за то, что вы слишком быстро ...
добавлено автор Adil, источник

Пытаться

var colors = ['blue', 'green', 'yellow', 'black'],
    colorIndex = 0,
    $body = $('body');

setInterval(function(){ $body.css('background', colors[colorIndex++ % colors.length])}, 1000);

Demo at http://jsfiddle.net/gaby/8uZga/

1
добавлено
Верстка сайтов HTML/CSS/JS/PHP
Верстка сайтов HTML/CSS/JS/PHP
3 439 участник(ов)

Правила группы: напишите !rules в чате. Группа Вк: vk.com/web_structure Freelancer: @web_fl Веб Дизайн: @dev_design Маркетолог: @topmarkening Автор: @M_Boroda