【发布时间】:2017-06-26 18:36:44
【问题描述】:
我目前正在开发一个项目,该项目基于倒数计时器显示和显示DOM 元素。每秒都有另一个函数调用这个函数。
这是一个代码示例:
function eventsOnTimer() {
let x = 1;
const interval = setInterval(() => {
if (x >= 0.0 && x < 30.0) {
document.getElementById('thing1').style.display = 'block';
document.getElementById('thing2').style.display = 'none';
}
else if (x >= 30.0 && x < 60.0) {
document.getElementById('thing1').style.display = 'none';
document.getElementById('thing2').style.display = 'block';
}
x++;
}, 1000);
}
我正在尝试提高性能,为此我尝试减少 DOM 请求的数量并寻找基于倒数计时器触发代码的替代方法。
【问题讨论】:
-
缓存 DOM 查找(调用
.getElementById()的结果)。 -
你确定这真的是一个瓶颈吗?每秒 2 次 DOM 更改是微不足道的。
-
CSS 不是一个选项?
-
@Malk 我在想类似的事情,但是改变一个类然后查找该类的 CSS 并不比直接改变样式更好。我什至不确定如何对其进行基准测试,因为它是异步浏览器渲染。
-
我想知道为什么你每秒都运行这个函数,然后使用
if()语句,所以它每 30 秒才改变一次。
标签: javascript jquery performance dom timer