function getStyle(obj,attr){ if(obj.currentStyle){ return obj.currentStyle[attr]; } else{ return getComputedStyle(obj,false)[attr]; } } function starMove(obj,json,fn){ var flag = true; for(var attr in json){ clearInterval(obj.timer); obj.timer = setInterval(function(){ //1.取当前值 var iCur = 0; if(attr == 'opacity'){ iCur = Math.round(parseInt(getStyle(obj,attr))*100); } else{ iCur = parseInt(getStyle(obj,attr)); } //2.算速度 var iSpeed = (json[attr]-iCur)/8; iSpeed = iSpeed > 0 ? Math.ceil(iSpeed) : Math.floor(iSpeed); //3.检测停止 if(iCur !== json[attr]){ flag = false; } else{ if(attr == 'opacity'){ obj.style.filter = 'alpha:(opacity:'+(iCur+iSpeed)+')'; obj.style.opacity = (iCur+iSpeed) /100; } else{ obj.style[attr] = iCur+iSpeed+'px'; } } if(flag){ clearInterval(obj.timer); if(fn){ fn(); } } } },30) }
谢谢前辈。。。
function starMove(obj, json, fn) { var flag = true; for (var attr in json) { clearInterval(obj.timer); obj.timer = setInterval(function () { //1.取当前值 var iCur = 0; if (attr == 'opacity') { iCur = Math.round(parseInt(getStyle(obj, attr)) * 100); } else { iCur = parseInt(getStyle(obj, attr)); } //2.算速度 var iSpeed = (json[attr] - iCur) / 8; iSpeed = iSpeed > 0 ? Math.ceil(iSpeed) : Math.floor(iSpeed); //3.检测停止 if (iCur !== json[attr]) { flag = false; } else { if (attr == 'opacity') { obj.style.filter = 'alpha:(opacity:' + (iCur + iSpeed) + ')'; obj.style.opacity = (iCur + iSpeed) / 100; } else { obj.style[attr] = iCur + iSpeed + 'px'; } } if (flag) { clearInterval(obj.timer); if (fn) { fn(); } } }, 30) } }
这个方法 括号嵌套有问题,自己好好看一下