var timer = null
var alpha = 1
function starttou(iTarget){
var oDiv = document.getElementById('oDiv')
console.log(oDiv.style.opacity)
clearInterval(timer)
var speed = null;
if(iTarget >alpha){
speed = 0.1
} else if(iTarget < alpha){
speed = -0.1
}
timer = setInterval(function(){
if(iTarget ==alpha) {
clearInterval(timer)
}
else{
alpha = alpha + speed
alpha = Math.floor(alpha*10)/10 //不知道为什么,输出的alpha不是整数,这里把它取整了
oDiv.style.opacity =alpha
}
},30)
}
解决办法
var oDiv = document.getElementById('div1'); clearInterval(timer); var speed = null; if(opa >alpha){ speed = 0.1 } else if(opa < alpha){ speed = -0.1 } timer = setInterval(function(){ if(opa ==alpha) { clearInterval(timer); } else{ alpha = alpha + speed; alpha = opa > alpha ? Math.ceil(alpha * 10) / 10 : Math.floor(alpha * 10) / 10; oDiv.style.opacity = alpha; } },30)
其中Math.ceil()是向上取整。
仅供参考
你看alpha值,每次乘以10之后是7.999999999999999……,所以取整之后得到的都是7,取整操作是舍弃小数部分,所以一直在0.7处循环。
Math.floor(alpha*10)/10
一个数乘以10,然后向下去整,然后再除以10,没懂
0.31*10=3.1
取整3
3/10=0.3
3.1*10=31/10=3.1