我每秒钟更新一次时钟,时间来自一个new Date
对象,但我想知道用setInterval
简单地添加初始时间或者创建一个{是否更好{1}}每秒使用该对象来更新时间。
它们都有效,但我想知道每秒创建一个新对象是否有责任,因为我确信new Date
方法会使用相当少量的资源,因为获取时会执行三个函数时间。 (setInterval()
,.getHours()
,.getMinutes()
)
我可以看到使用.getSeconds()
对象的优势,因为我认为它会在系统时间变化时发生变化(更改时区或夏令时调整)。
使用new Date
更有效率,还是每次都使用与创建setInverval()
对象一样多的资源?
答案 0 :(得分:2)
setInterval(function myFunc(){}, 1000)
无法保证每秒都会调用myFunc
。事实上,inteval可能会有很大差异。例如,在Chrome中,如果更改制表符,则间隔将减慢很多,直到您返回初始制表符
所以请继续使用new Date()
见http://javascript.info/tutorial/settimeout-setinterval
答案 1 :(得分:0)
使用它,它会对你有所帮助,为了在页面加载后只显示一次你只需使用新的Date()和getHours(),getMinutes,getSeconds函数。为了在不刷新页面的情况下显示更新时间,您需要同时使用setInterval()和new date()功能。您需要在设置间隔内使用新的date(),因为,如果您在侧面添加任何警报你编码然后它不会暂停你的时间更新。
function pad(str, max) {
return ((str.length < max) ? pad("0" + str, max) : str);
}
var d;
setInterval(function myFunc() {
d = new Date();
document.getElementById("date").innerText = (pad(d.getHours().toString(), 2) + ":" + pad(d.getMinutes().toString(), 2) + ":" + pad(d.getSeconds().toString(), 2));
}, 1000);
<div id="date"></div>