锁定老帖子 主题:JavaScript写的一段代码特占内存
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-01-29
最后修改:2010-01-29
大家都运行下,下面的javascript脚本运行的时候特占内存,提提建议? time.js如下: var montharray = new Array("01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12")
getthedate();
html如下: <body>
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-01-30
window.setInterval("getthedate()", 1000);
惹的祸,getthedate函数里请使用window.setTimeout("getthedate()",1000); |
|
返回顶楼 | |
发表时间:2010-01-31
对,就是这么回事!
|
|
返回顶楼 | |
发表时间:2010-01-31
setTimeout()在执行时,是在载入后延迟指定时间后,去执行一次表达式,记住,次数是一次
而setInterval()则不一样,它从载入后,每隔指定的时间就执行一次表达式 |
|
返回顶楼 | |
发表时间:2010-01-31
楼上说的都对,但是都没有仔细看楼主代码背后的需求
“一个简单的例子,在网页上某个位置显示当前时间,并且每秒更新” 从需求看,用setInterval是没有问题的。 楼主你的问题在于window.setInterval("getthedate()", 1000);这个语句的调用位置。用setInterval没错,但是不应该放到getthedate函数里面,而是应该放到onload函数或者某个按钮的onclick中都可以。 现在你的程序会导致,每一秒之后,客户端中就多了一个新的timer,因为你的setInterval就在定时函数中声明,这个有点像无限递归的意思。 把setInterval只需定义一次。把你最后的getthedate()替换为window.setInterval("getthedate()", 1000); 同时删除getthedate方法内部的setInterval |
|
返回顶楼 | |
发表时间:2010-01-31
setInterval(function(){
//你的代码.... },1000) |
|
返回顶楼 | |
发表时间:2010-02-01
最后修改:2010-02-01
bluemeteor 写道 楼上说的都对,但是都没有仔细看楼主代码背后的需求
“一个简单的例子,在网页上某个位置显示当前时间,并且每秒更新” 从需求看,用setInterval是没有问题的。 楼主你的问题在于window.setInterval("getthedate()", 1000);这个语句的调用位置。用setInterval没错,但是不应该放到getthedate函数里面,而是应该放到onload函数或者某个按钮的onclick中都可以。 现在你的程序会导致,每一秒之后,客户端中就多了一个新的timer,因为你的setInterval就在定时函数中声明,这个有点像无限递归的意思。 把setInterval只需定义一次。把你最后的getthedate()替换为window.setInterval("getthedate()", 1000); 同时删除getthedate方法内部的setInterval 对的,你得分清用setTimeout和setIntervale的区别 现在的setIntervale的位置换成setTimeout就对了 还有的是, 你用+=对字符串操作也很多, 建议使用array.join来一次性拼装 |
|
返回顶楼 | |
发表时间:2010-02-01
上面两种修改方法都对。
1,将setInterval() 替换成 settimeout(); 或者 2,将setInterval() 的执行从function中拿出来;也可以。 楼主现在的代码会无穷次的增加 function 的执行次数。 |
|
返回顶楼 | |
发表时间:2010-02-01
setTimeout()是到某一个时刻开始执行,只执行一次
而setInterval()是每隔一个时间段执行一次,执行多次,相当于定时器 |
|
返回顶楼 | |
发表时间:2010-02-01
正解已经出现
|
|
返回顶楼 | |