hasClass是否应位于removeClass之前-纯Javascript

hasClass是否应位于removeClass之前-纯Javascript,javascript,function,class,dom,exists,Javascript,Function,Class,Dom,Exists,要删除该类,我使用 getElementsByClassName("myclass1")[i].classList.remove("myclass2") 基于HTML5技术。(我知道这不适用于IE9-,只适用于浏览器) 据我所知,这是绝对没有问题,不要检查类是否存在。对吧? 然而,在我的例子中,在我想要删除myclass2的页面上有许多带有myclass1的项目,但其中大多数(比如90%)没有myclass2 检查类myclass2是否存在将有助于提高性能,因为检查是否存在可能比删除快得多?(

要删除该类,我使用

getElementsByClassName("myclass1")[i].classList.remove("myclass2")
基于HTML5技术。(我知道这不适用于IE9-,只适用于浏览器)

据我所知,这是绝对没有问题,不要检查类是否存在。对吧?

然而,在我的例子中,在我想要删除
myclass2
的页面上有许多带有
myclass1
的项目,但其中大多数(比如90%)没有
myclass2

检查类
myclass2
是否存在将有助于提高性能,因为检查是否存在可能比删除快得多?(仍然不确定我的上一次声明)

对我来说,你会怎么做

多谢各位

据我所知,这是绝对没有问题,不要检查类是否存在。对吧?

对。只移除它找到的令牌

检查类myclass2是否存在将有助于提高性能,因为检查是否存在可能比删除快得多


很难,因为它会在列表中搜索两次。

GetElementsByCassName
支持多个类,因此如果您想简化它,可以将“myclass1”和“myclass2”都作为参数包含在列表中,它将只返回同时包含这两个元素的元素(有关更多信息,请参见此处:)

因此,在您的情况下,我建议使用以下方法:

getElementsByClassName("myclass1 myclass2")[i].classList.remove("myclass2")

您应该问自己一个问题:代码现在的工作方式(无论类是否存在,都尝试删除)是性能瓶颈吗?如果没有,那么这可能是一个例子(这里有两个有用的链接)。classList.remove(“myclass2”)还需要检查它是否存在,然后才能删除它(无论如何,它需要找到它)。事实上,如果您自己检查它是否存在并且确实存在,那么调用.remove(“myclass2”)它将再次检查。因此,实际上添加该检查可能会更慢:)@Daniël Knippers对,但如果页面上有许多myclass2,情况就是这样。然而,在我的例子中,大约90%的人没有,但我必须通过所有元素来检查并删除它们。所以这不会太慢,但我可以通过检查是否存在来赢得更多。也许我没有正确理解它。但我得到的是一组元素,有class
myclass1
(可能还有
myclass2
)。您想从这些元素中删除
myclass2
。您询问在调用
.remove(“myclass2”)
之前,是否可以更快地首先检查每个元素是否有
myclass2
。我回答说,
.remove(“myclass2”)
已经包含了该检查,所以它可能会更慢:)让我问一下,您想在哪里/如何“检查myclass2是否存在”?@haradzineiec如果您的性能担忧是获得大量的
myclass1
元素,这些元素可能有也可能没有
myclass2
,那么,您是否可以选择任何带有
myclass2
的内容,并对同样带有
myclass1
的内容进行筛选?如果您知道
myclass2
在较少的元素上,无论这些元素上是否存在
myclass1
,这可能会更有效。但是,您确实应该做一些测试(如果您还没有),看看当前的方式是否适合您的使用,因为这可能会浪费您的精力。谢谢您,但在我的情况下,这不是一个解决方案,因为我需要删除所有包含myclass1的项目的myclass2,并且每个第n个myclass1都需要myclass2并进行一些计算。无论如何,谢谢你的回答,因为这肯定是其他人的选择,这是有道理的。