您可以使用setTimeout
:
function flashtext(ele,col) {
var tmpColCheck = document.getElementById( ele ).style.color,
time;
if (tmpColCheck === 'grey') {
document.getElementById( ele ).style.color = col;
time=1400;
} else {
document.getElementById( ele ).style.color = 'grey';
time=700;
}
setTimeout(function(){flashtext('flashingtext','yellow')},time);
}
flashtext('flashingtext','yellow');
演示:http://jsfiddle.net/EfpEP/
编辑:
但是可以稍微改进一下:
function flashtext(ele,col) {
var style = document.getElementById(ele).style;
(function main(){
var cond=style.color === 'grey';
style.color=cond?col:'grey';
setTimeout(main,cond?1400:700);
})();
}
flashtext('flashingtext','yellow');
演示:http://jsfiddle.net/EfpEP/3/
Alnitak 有存储颜色的好主意,因为浏览器可以将其更改为另一种语法。document.getElementById
但是他的代码每次都在调用。然后,按照他的想法,我认为最好的方法是:
function flashtext(ele,col) {
var style = document.getElementById(ele).style,
cond=style.color === 'grey';
(function main(){
cond=!cond;
style.color=cond?col:'grey';
setTimeout(main,cond?1400:700);
})();
}
flashtext('flashingtext','yellow');
演示:http://jsfiddle.net/EfpEP/4/
编辑2:
但是如果你要使用类似的东西
flashtext('flashingtext','yellow');
flashtext('flashingtext2','blue');
...
你最终会冻结浏览器。
相反,您应该使用
function FlashText(){
var arr=[],
cond=false,
started=false;
this.add=function(el,col){
if(typeof el==='string'){el=document.getElementById(el);}
arr.push([el.style,col]);
}
this.start=function(){
if(started){return;}
started=true;
main();
}
function main(){
cond=!cond;
for(var i=0,l=arr.length;i<l;i++){
arr[i][0].color=cond?arr[i][1]:'grey';
}
setTimeout(main,cond?1400:700);
};
}
var flash=new FlashText();
flash.add('flashingtext','yellow');
flash.add('flashingtext2','blue');
flash.start();
您还可以调用通过引用传递元素:(flash.add(document.getElementById('flashingtext'),'yellow')
也许您有一个变量,其中包含一个没有 id 的元素)。
但尽量不要在flash.start()
. 如果你这样做,元素将是黑色(或默认颜色),直到main
被调用(可能是 1.4 秒)。
演示:http://jsfiddle.net/EfpEP/6/