我在JavaScript中有一行代码,使用原型,每秒运行几次。这段代码取决于某些变量的状态,可以确保某个元素具有或不具有类。
我的问题是,我应该盲目地添加或删除课程,还是应该先检查?我应该有这个代码:
if (!element.hasClassName("overtime")) {
element.addClassName("overtime");
}
if (element2.hasClassName("overtime")) {
element2.removeClassName("overtime");
}
或者只是拥有:
element.addClassName("overtime");
element2.removeClassName("overtime");
我的理由是添加和删除可能是更昂贵的方法,即使更改发生得非常快,也可能会修改DOM,导致片状或加剧内存泄漏或类似的事情。
答案 0 :(得分:2)
使用第二个。
通过检查原型代码,您可以看到:
代码:
hasClassName: function(element, className) {
if (!(element = $(element))) return;
var elementClassName = element.className;
return (elementClassName.length > 0 && (elementClassName == className ||
new RegExp("(^|\\s)" + className + "(\\s|$)").test(elementClassName)));
},
addClassName: function(element, className) {
if (!(element = $(element))) return;
if (!Element.hasClassName(element, className))
element.className += (element.className ? ' ' : '') + className;
return element;
},
removeClassName: function(element, className) {
if (!(element = $(element))) return;
element.className = element.className.replace(
new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip();
return element;
},