window.onload = function () {
var donghua = document.getElementById('donghua');
donghua.onmouseover = function () {
startMove(donghua,{width: '400'},function () {
startMove(donghua,{height:'20'})
})
}
}
function getStyle(obj, attr) {
if (obj.currentStyle) {
return obj.currentStyle[attr];
}
else {
return getComputedStyle(obj, false)[attr];
}
}
function startMove(obj, json, fn) {
var flag = true;//假设标杆
clearInterval(obj.timer);
obj.timer = setInterval(function () {
for (var attr in json) {
// 1.取当前的值
var iCur = 0;
if (attr == 'opacity') {
iCur = Math.round(parseFloat(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;
}
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)
}
1 回答
萧雁翎
TA贡献57条经验 获得超235个赞
楼主,你好。
问题可能是你的标杆没有放在定时器内导致的。
19-22行代码可以调整顺序如下:
clearInterval(obj.timer); obj.timer = setInterval(function () { var flag = true;//假设标杆 for (var attr in json) {
如果解决了您的问题,请采纳,谢谢!
添加回答
举报
0/150
提交
取消