今天跟著B(niǎo)lue大神的視頻學(xué)習(xí)時(shí),把昨天寫(xiě)的任意值運(yùn)動(dòng)框架拿來(lái)用,發(fā)現(xiàn)添加的第四個(gè)函數(shù)參數(shù)一直不響應(yīng),大半天才發(fā)現(xiàn)昨天寫(xiě)的有錯(cuò)誤,雖然看起來(lái)效果一樣,但是在關(guān)閉定時(shí)器后面添加alert語(yǔ)句沒(méi)反應(yīng)。看了半天,才發(fā)現(xiàn)關(guān)閉定時(shí)器的判斷條件寫(xiě)錯(cuò)了,obj.style[pro]得到的并不全是數(shù)字,還有px,要parseInt后再比較。前面頁(yè)面沒(méi)問(wèn)題其實(shí)只是speed變?yōu)?,程序一直在運(yùn)行,在疊加程序后加上alert語(yǔ)句,果然目標(biāo)值達(dá)到后還是一直出來(lái)彈窗。
function getStyle(obj, name) {
if (obj.currentStyle) {
return obj.currentStyle[name];
} else {
return getComputedStyle(obj, false)[name];
}
}
var timer = null;
function move(obj, pro, iTarget,fnEnd) {
clearInterval(obj.timer);
obj.timer = setInterval(function() {
var cur = 0;
if (pro == "opacity") {
cur = Math.round(parseFloat(getStyle(obj, pro)) * 100);
}
else {
cur = parseInt(getStyle(obj, pro));
}
var speed = (iTarget - cur) / 6;
speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
//錯(cuò)誤if (obj.style[pro]== iTarget)
if (parseInt(obj.style[pro])== iTarget)
//或者if(cur==iTarget)
{
clearInterval(obj.timer);
if (fnEnd) {
fnEnd();
}
}
else {
if (pro == "opacity") {
obj.style.filter = "alpha(opacity:" + (cur + speed) + ")";
obj.style.opacity = (cur + speed) / 100;
} else {
obj.style[pro] = cur + speed + "px";
// alert("a");
}
}
}, 30);
}