2015-03-02 22 views
0

我有以下类(下面),它们被动态地添加到HTML(如下)中。仅限于JavaScript - 删除某些类如果存在

我有类已经存在,有什么推荐的Javascript代码应该被用来删除一个或所有这些类的,如果他们已经存在下面的HTML。我正在构建的函数将重置元素,我需要当前的类存在,但如果存在一个/多个值,则需要删除颜色类。

HTML

<div id="overlay__inner" class="overlay__inner overlayActive clearfix"></div> 

<ul> 
    <li>is--blue</li> 
    <li>is--red</li> 
    <li>is--yellow</li> 
    <li>is--purple</li> 
    <li>is--green</li> 
    <li>is--pink</li> 
    <li>is--orange</li> 
</ul> 

UPDATE:

所以,总之,我想这样做在JavaScript这个jQuery例如:

$('#overlay__inner')。removeClass('is - blue is - red is - yellow is - purple is - green is - pink is - orange');

这是我到目前为止有:

document.getElementById('overlay__inner').classList.remove('is--blue').classList.remove('is--red').classList.remove('is--yellow').classList.remove('is--purple').classList.remove('is--green').classList.remove('is--pink').classList.remove('is--orange');

但我得到这个错误:

遗漏的类型错误:无法读取属性未定义

+0

不知道,如果类部分应该是代码或没有。如果不是,请使用markdown创建列表。 – 2015-03-02 18:43:43

+0

@FelixKling这个问题不同,我希望在添加类后保留类。这是测试和具体类的删除是我需要帮助。 – Neil 2015-03-02 18:47:12

+0

另一个问题显示了如何从一个元素中删除一个类,甚至指向'classList' ....的链接是不是你想要的?没有必要测试该类是否存在。 – 2015-03-02 18:48:16

回答

0

'班级列表'去除一个班级非常简单,你有什么特别的麻烦?

var els = document.querySelectorAll('.is--blue'); 
 
Array.prototype.forEach.call(els, function(el) { 
 
    el.classList.remove('is--blue'); 
 
});
.is--blue { 
 
    color: blue; 
 
}
<p class="is--blue something-else">Sample</p> 
 
<p class="is--blue">Sample</p>

+0

这里的问题是我在其他地方使用过这个类,另外我已经有了对象存储库,所以查询选择器会比获取ID要慢。是的,如果有任何颜色存在,代码将需要多个类(.is - red,.is - yellow等)。 – Neil 2015-03-02 18:54:19

+1

@Neil:如何获取对元素的引用与问题无关。您只需遍历所有要删除的类名并将其删除即可。我仍然不明白你有什么问题。 – 2015-03-02 18:56:04