本来想写一个颜色渐变的的函数的,谁知道写出来的是闪烁的效果,哎,有点小伤心~~
不说了,直接上代码吧
1 /*iTarget是十六进制的形参*/ 2 function blinkColor(obj,iTarget){ 3 clearInterval(obj.timer) 4 var iSpeed,iCur; 5 6 iCur = iIntColor; 7 iTarget = hexToDem(iTarget); 8 iSpeed = Math.floor((iTarget - iCur)/20); 9 obj.timer = setInterval(function(){ 10 if(iCur == iTarget){ 11 clearInterval(obj.timer) 12 }else{ 13 iCur += iSpeed; 14 obj.style.color = "#" + rgbToHex(iCur); 15 } 16 },30) 17 18 }; 19 20 21 //封装hexToDem,将16进制转换为10进制 22 function hexToDem(hex){ 23 return parseInt("0x"+hex); 24 }; 25 26 27 //封装rgbToHex,将获取的颜色转换为十六进制 28 function rgbToHex(s){ 29 var arr = [],sResult = ""; 30 if(typeof(s) === "string" && s.substr(0,1) === 'r') //如果颜色模式是RGB模式,则把RGB转换为16进制 rgb(255,255,255) 31 { 32 arr = s.split(","); 33 arr[0] = parseInt(arr[0].substr(4));//第0位要特殊处理,rgb(255截取第4位以后的,即255 34 35 for(var i = 0 ;i < arr.length; i++){ 36 sResult += parseInt(arr[i]).toString(16); 37 }; 38 39 return sResult; 40 }else 41 { 42 return s.toString(16); 43 44 }; 45 }; 46 47 48 49 //封装getStyle,获取真正的样式 50 function getStyle(obj,attr){ 51 if(obj.currentStyle){ 52 return obj.currentStyle[attr]; 53 }else{ 54 return getComputedStyle(obj,false)[attr]; 55 }; 56 }; 57