【发布时间】:2012-10-07 22:08:43
【问题描述】:
我很好奇是否有人知道其中哪个更有效,我只关心 Firefox 作为浏览器,不需要知道这段代码在 IE 等中不起作用...
基本上,我会根据输入字段的值显示和隐藏 DOM 元素,如果您愿意,可以进行即时搜索。如果没有显示搜索结果,我需要显示或隐藏“未找到”元素。我很好奇在修改其类属性之前检查“未找到”元素是否处于正确状态或仅修改类属性是否更便宜(更有效)。
问题:我是否应该在每次运行函数时删除/添加隐藏类,即使元素的类属性没有变化?
if (shown_count > 0) {
element.classList.add('hidden');
}
else {
element.classList.remove('hidden');
}
或者我应该在实际更新之前检查元素是否需要更新其类属性?
if (shown_count > 0) {
if (element.classList.contains('hidden') == false) {
element.classList.add('hidden');
}
}
else {
if (element.classList.contains('hidden')) {
element.classList.remove('hidden');
}
}
【问题讨论】:
-
我相信,使用 jsperf 或类似方法创建基准会比我们更好地回答您的问题。
-
好问题。看起来它可能取决于在任何给定查询中需要更改的元素百分比。例如,如果 100% 需要更改,第一个显然更有效。如果少于 100% 需要改变,答案可能会改变。
-
Aakil,我不是要显示/隐藏实际的搜索结果,而是我要问的是我是否应该每次都在函数末尾修改一个元素的类属性,或者只修改什么时候应该改变课程。
标签: javascript performance firefox dom-manipulation