var oBox = document.getElementById('box');
var maxLeft = utils.win('clientWidth') - oBox.offsetWidth;
var step = 5;
var timer = null;
// 使用递归思想完成setTimout的轮询动画:
// 每一次在执行动画之前,首先把上一次设置的那一个没有用的定时器清除,以节约内存
function move() {
window.clearTimeout(timer);
var curLeft = utils.css(oBox, 'left');
if (curLeft + step >= maxLeft) { // 边界判断: 加上步长计算
utils.css(oBox, 'left', maxLeft);
return;
}
curLeft += step;
utils.css(oBox, 'left', curLeft);
timer = window.setTimeout(move, 10);
}
move();
var timeblc = document.getElementById('nowtime');
var weekdays = ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"];
function addZero(t){
if(t<10) return '0'+t;
return t;
}
function showTime(){
var time = new Date();
var t = time.getFullYear()+'年'+getMonthDay(time)+getWeekday(time)+getHMS(time);
timeblc.innerHTML = t;
setTimeout('showTime()',1000); //这里!!
}
function getMonthDay(time){
var m = addZero(time.getMonth()+1);
var d = addZero(time.getDate());
var str = m+'月'+d+'日';
return str;
}
function getWeekday(time){
var str = weekdays[time.getDay()];
return str;
}
function getHMS(time){
var h = addZero(time.getHours());
var m = addZero(time.getMinutes());
var s = addZero(time.getSeconds());
var str = h+':'+m+':'+s;
return str;
}
showTime();`
代码注释处,第一个参数若不添加引号则引发内存溢出
备注:
我有一个javascript代码来控制动画div。在这我使用setTimeout使div移动。您可以点击以下链接播放动画。在javascript中的setTimeout内存泄漏问题
`http://jsfiddle.net/dudling007/PfPzj/3/`
的问题是,播放动画,每当我点击了暂停一对夫妇的时间和恢复按钮后,它需要大量的内存和暂停按钮的点击也变得如此之慢。我看到了MAC OSX的活动监视器的%CPU和实际内存消耗。有人请帮助我,单击暂停按钮10 -14次后,代码中会消耗大量内存的问题是什么。
2013-05-28 Dudling
+1
的方法animate当一个通知,说有代码陪你的jsfiddle链接,这是有原因的。 – George
+0
您可能想要使用jQuery()。animate()。 – Inkbug
A
回答
1****
内存泄漏是因为事件是在每次moveCard方法被调用的时间。按钮绑定应该移出 “对象”循环。
您可以使用的工具链接firebug为firefox检查的JavaScript控制台日志。 以下是您登录暂停按钮的示例。这应该只发生一次。 jsfiddle.net/Th6ha/1/
$('#pause_button').click(function() {
console.log('pause pressed');
arrayObject.pause(wStart,lStart,wEnd,lEnd);
$('#resume_button').css('display','inline-block');
$('#pause_button').css('display','none');
});
你可以考虑使用jQuery