Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript删除类_Javascript - Fatal编程技术网

使用javascript删除类

使用javascript删除类,javascript,Javascript,我需要从页面中的所有元素中删除特定的class属性。也就是说,我们需要从当前html页面的所有元素中删除特定的类。我们只有类名作为引用(我们需要从该页面中删除它),而没有其他内容 请注意,我不能使用id或其他类之类的任何引用,而且我也不能使用任何JavaScript库来进行此操作 如对此有任何建议,将不胜感激 还要注意,我们需要删除的类不会超过两次 function removeClass(className) { // convert the result to an Array ob

我需要从页面中的所有元素中删除特定的class属性。也就是说,我们需要从当前html页面的所有元素中删除特定的类。我们只有类名作为引用(我们需要从该页面中删除它),而没有其他内容

请注意,我不能使用id或其他类之类的任何引用,而且我也不能使用任何JavaScript库来进行此操作

如对此有任何建议,将不胜感激

还要注意,我们需要删除的类不会超过两次

function removeClass(className) {
    // convert the result to an Array object
    var els = Array.prototype.slice.call(
        document.getElementsByClassName(className)
    );
    for (var i = 0, l = els.length; i < l; i++) {
        var el = els[i];
        el.className = el.className.replace(
            new RegExp('(^|\\s+)' + className + '(\\s+|$)', 'g'),
            '$1'
        );
    }
}

更新:请参阅实时演示:

这里有一种方法,在非常大的页面上速度可能会很慢,但会从所有元素中删除该类

var list = document.getElementsByTagName('*');
for(var i=0; i < list.length; i++){
  list[i].className = list[i].className.replace('YourClassName','');
}
var list=document.getElementsByTagName('*');
对于(变量i=0;i
如果您使用的是现代浏览器:

var forEach = Array.prototype.forEach;
var className = "yourclass";

forEach.call(document.querySelectorAll("." + className), function(node) {
    node.classList.remove(className);
});

请参阅:,和了解更多详细信息。

请提供一些描述html结构的代码,以便我们更有可能从哪个元素中删除该类?都是吗?其中一些?在什么情况下,或在什么事件下。。。我被这个问题的投票结果迷住了,现在还不清楚。您想从包含该类的元素中删除特定的“类名”吗(这样,您就知道要删除什么),还是其他什么?是否要从页面的所有元素中删除所有整类属性?什么是识别“特定类属性”?喜欢这个编辑,它澄清了一切。你读过这个问题吗?第二句话?
getElementsByClassName
返回一个实时集合。当您从元素中删除筛选使用的类时,索引将移动1,从而导致循环的其余部分全部错误。你应该向后迭代。:)^符号不仅用于开头:P。它可以用在方括号的开头来否定它们的内容:@katspaugh
className
属性生成当前以空格分隔的类名列表(它“是活动的”)
getAttribute(“class”)
返回元素的
class
属性值,与原始源中的值相同。最近的用户代理可能已经“修复”了这个问题(我发现能够获得原始值很有用),但是你不能依赖它。请记住,MSHTML混淆了什么是属性,什么是属性(正如许多人一样),但其他布局引擎则不然。CSS类名可能包含非ASCII字符,所以
[^\w]
(相当于
\w
)匹配太多。请参阅中的
jsx.dom.css.removeClassName()
了解可能的修复方法。您正在使用
className
,这很好,但与gion_13的代码存在相同的问题。IE9和lower@bhavya_w这就是为什么我从“如果你使用的是现代浏览器”开始。另外,我在答案中发布的链接提供了一个跨浏览器实现(给定IE>7)。
var forEach = Array.prototype.forEach;
var className = "yourclass";

forEach.call(document.querySelectorAll("." + className), function(node) {
    node.classList.remove(className);
});