延迟切换文本颜色
Switch Text Color with Delay
我正在尝试通过超时更改文本的颜色。就像每 5 秒一样,颜色应该改变一次。我只是无法让它工作。我做错了什么?
var rainBowColors = new Array();
rainBowColors.push("#FF0000"); //Red: #FF0000
rainBowColors.push("#FF7F00"); //Orange: #FF7F00
rainBowColors.push("#FFFF00"); //Yellow: #FFFF00
rainBowColors.push("#00FF00"); //Green: #00FF00
rainBowColors.push("#0000FF"); //Blue: #0000FF
rainBowColors.push("#4B0082"); //Indigo: #4B0082
rainBowColors.push("#8F00FF"); //Violet: #8F00FF
var rainbowCounter = 0;
for (var counter = 0; counter < 1000; counter++)
{
//Easter :)
//var timeOut = setTimeOut(function(){
jQuery(".text").css("color", rainBowColors[rainbowCounter]);
//}, 500);
//clearTimeOut(timeOut);
//Higher Counter
rainbowCounter++;
//Reset counter
if (rainbowCounter == rainBowColors.length)
{
rainbowCounter = 0;
}
}
完整示例:http://jsfiddle.net/xLS25/
回答你的问题:在你的代码中,颜色确实会改变,只是为了快速让眼睛看到。循环以非常快的方式运行所有 1000 次迭代,每次迭代都会执行超时(也非常快(,这反过来又使它们似乎同时解析(太快了,肉眼看不到(。最重要的是,如果以这种方式触发,您的计时器由于其异步性质而并行滴答作响,您正在寻找的是计时器一个接一个地按顺序启动。希望这是有道理的
尝试使用 setInterval 而不是超时
var rainBowColors = new Array();
rainBowColors.push("#FF0000"); //Red: #FF0000
rainBowColors.push("#FF7F00"); //Orange: #FF7F00
rainBowColors.push("#FFFF00"); //Yellow: #FFFF00
rainBowColors.push("#00FF00"); //Green: #00FF00
rainBowColors.push("#0000FF"); //Blue: #0000FF
rainBowColors.push("#4B0082"); //Indigo: #4B0082
rainBowColors.push("#8F00FF"); //Violet: #8F00FF
var rainbowCounter = 0;
var interval = setInterval(function(){
jQuery(".text").css("color", rainBowColors[rainbowCounter]);
rainbowCounter++;
//Reset counter
if (rainbowCounter == rainBowColors.length)
{
rainbowCounter = 0;
}
},100);
http://jsfiddle.net/xLS25/2/
附言这个数组声明与你的相同,但更简洁一些。您可能希望改用它:
var rainBowColors = [
"#FF0000", //Red
"#FF7F00", //Orange
"#FFFF00" //Yellow
// ... add other colors
];
试试这个
setInterval(function(){
jQuery(".text").css("color", rainBowColors[rainbowCounter]);
rainbowCounter++;
//Reset counter
if (rainbowCounter == rainBowColors.length)
{
rainbowCounter = 0;
}
},500);
var rainBowColors = new Array();
rainBowColors =["#FF0000","#FF7F00","#FFFF00","#00FF00","#0000FF","#4B0082","#8F00FF"];
var rainbowCounter = 0;
function changeColor(){
$(".text").css("color", rainBowColors[rainbowCounter]);
}
setInterval(function(){
if (rainbowCounter != rainBowColors.length)
{
rainbowCounter++;
changeColor();
}
else{
rainbowCounter = 0;
changeColor();
}
}, 500);
相关文章:
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 高亮显示时编辑文本大小和颜色
- 使用CSS/JavaScript更改剑道图工具提示文本颜色
- mouseover和mouseleave文本颜色更改在指令链接中不起作用
- 如何在php中创建一个函数,该函数与文本区域一起工作,通过输入类似[color:red]的内容来打印具有等效颜色的文本
- HTML-从mysql生成的选择框中的一个选项更改文本区域的颜色
- 如果值为负数,如何更改文本的颜色
- 1种颜色的Javascript闪烁文本更长
- 如何更改圆环图中文本的颜色
- 如何在flash html5画布项目中动态更改文本颜色
- 单击时将文本的颜色更改为随机颜色(按钮)
- 使用JavaScript淡化文本颜色
- 在不更改边框颜色的情况下更改文本的颜色
- 使用Javascript切换文本颜色
- 我可以使用jqgrid的oncellselect事件根据单元格内容将文本颜色更改为蓝色吗
- 使用Javascript更改文本区域的颜色
- 如何使用颜色选择器来更改背景中的文本
- 内部 DIV 颜色文本在鼠标悬停时没有更改
- React Native TouchableHighlight字体颜色文本更改
- 邮件类型输入:如果邮件错误或正确,动态改变按钮的颜色/文本