1

jQueryonclickを使用してページの背景画像を変更したいのですが、次のようになります。

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);
});

しかし、それは機能しません、どんな助けもいただければ幸いです

4

2 に答える 2

2

あなたはこれを行うことができます :

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

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

私は2つの変更を加えました:

  • コールバックに与えられる最初の引数は、配列の要素ではなく、インデックスです。
  • インデックスを使用して遅延を計算するためにさまざまな遅延を与えます
于 2013-01-29T11:08:15.090 に答える
1

試す

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

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

http://jsfiddle.net/gaby/8uZga/でのデモ

于 2013-01-29T11:10:47.750 に答える