这段代码的目的是在一个循环中多次改变网页的背景。
以下实现不使用 .toString() 设置背景颜色,而是显式静态地说明背景应更改为的颜色。
var i=1;
function changeColor() {
var
interval=100, //16.66666666, //60 hertz refresh rate
loops=10
;
setTimeout(function() {$("#page").css({"background":"#000"})}, interval*0);
setTimeout(function() {$("#page").css({"background":"#111"})}, interval*1);
setTimeout(function() {$("#page").css({"background":"#222"})}, interval*2);
setTimeout(function() {$("#page").css({"background":"#333"})}, interval*3);
setTimeout(function() {$("#page").css({"background":"#444"})}, interval*4);
setTimeout(function() {$("#page").css({"background":"#555"})}, interval*5);
setTimeout(function() {$("#page").css({"background":"#666"})}, interval*6);
setTimeout(function() {$("#page").css({"background":"#777"})}, interval*7);
setTimeout(function() {$("#page").css({"background":"#888"})}, interval*8);
setTimeout(function() {$("#page").css({"background":"#999"})}, interval*9);
setTimeout(function() {$("#page").css({"background":"#AAA"})}, interval*10);
setTimeout(function() {$("#page").css({"background":"#BBB"})}, interval*11);
setTimeout(function() {$("#page").css({"background":"#CCC"})}, interval*12);
setTimeout(function() {$("#page").css({"background":"#DDD"})}, interval*13);
setTimeout(function() {$("#page").css({"background":"#EEE"})}, interval*14);
setTimeout(function() {$("#page").css({"background":"#FFF"})}, interval*15);
setTimeout(function() {
if (i<loops) {
i++;
changeColor();
} else {
$("#page").css({"background":"#FFF"});
i=1;
}
},interval*16);
}
很明显我应该使用 for 循环,所以我将其重写为:
var i=1;
var color=0x111111;
function changeColor() {
var
interval=100, //16.66666666, //60 hertz refresh rate
loops=3
;
for (j=0;j<15;j++) {
setTimeout(function() {$("#page").css({"background":"#"+color.toString(16)})}, interval*j);
color+=0x111111;
}
color=0x111111;
setTimeout(function() {
if (i<loops) {
i++;
changeColor();
} else {
$("#page").css({"background":"#FFF"});
i=1;
}
},interval*j);
}
但是,背景颜色仅使用此代码更改一次。