Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/32.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删除CSS规则_Javascript_Css - Fatal编程技术网

通过JavaScript删除CSS规则

通过JavaScript删除CSS规则,javascript,css,Javascript,Css,如何通过JavaScript删除CSS规则 var elStyle = document.querySelector('style#the-style'); var stylesheet = elStyle.sheet; var rules = stylesheet.cssRules; for (var i=0; i<rules.length; i++) { var rule = rules[i]; if (rule.selectorText === '#rule2 em') {

如何通过JavaScript删除CSS规则

var elStyle = document.querySelector('style#the-style');
var stylesheet = elStyle.sheet;
var rules = stylesheet.cssRules;
for (var i=0; i<rules.length; i++) {
  var rule = rules[i];
  if (rule.selectorText === '#rule2 em') {
    // TODO: remove this rule
    break;
  }
}
var-elStyle=document.querySelector('style#the style');
var stylesheet=elStyle.sheet;
var规则=stylesheet.cssRules;
对于(var i=0;i来说,虽然它是,但它会带来大量的浏览器问题

以下是如何从样式表中获取规则:

var rules = new Array();
if (document.styleSheets[1].cssRules) {
    rules = document.styleSheets[1].cssRules;
}
else if (document.styleSheets[1].rules) {
    rules = document.styleSheets[1].rules;
}
如果你觉得这有点恶心,那就更糟了

更新 我可以看到这个问题已经被编辑过了

以下工作()


下面是一个示例,说明如何做到这一点:

var styleTag = document.getElementById ("the-style");
var sheet = styleTag.sheet ? styleTag.sheet : styleTag.styleSheet;

if (sheet.cssRules) { // all browsers, except IE before version 9
    for (var i=0; i<sheet.cssRules.length; i++) {
        if (sheet.cssRules[i].selectorText === '#rule2 em') {        
            //console.log(sheet.cssRules[i]);
            sheet.deleteRule (i);
        }
    }  
}
else 
{  // Internet Explorer before version 9
    for (var i=0; i<sheet.rules.length; i++) {
        if (sheet.rules[i].selectorText === '#rule2 em') {        
            // console.log(sheet.cssRules[i]);
            sheet.removeRule (i);
        }
    } 
}
var styleTag=document.getElementById(“样式”);
var sheet=styleTag.sheet?styleTag.sheet:styleTag.styleSheet;
if(sheet.cssRules){//所有浏览器,9版之前的IE除外

对于(var i=0;i可能是的副本,我建议您将CSS规则更改为类,并在需要更改其属性时简单地替换该类。这样您就不会弄乱ID,并且可以控制CSS类的输出。@VladBardalez我添加了一个解释。可以吗?@iamjpg我正在编写一种析构函数。在这种情况下,chan我的目标并不是使用这种风格。这正是我想要的。谢谢。我没有检查旧浏览器。
。规则要求使用您的代码。谢谢。
var styleTag = document.getElementById ("the-style");
var sheet = styleTag.sheet ? styleTag.sheet : styleTag.styleSheet;

if (sheet.cssRules) { // all browsers, except IE before version 9
    for (var i=0; i<sheet.cssRules.length; i++) {
        if (sheet.cssRules[i].selectorText === '#rule2 em') {        
            //console.log(sheet.cssRules[i]);
            sheet.deleteRule (i);
        }
    }  
}
else 
{  // Internet Explorer before version 9
    for (var i=0; i<sheet.rules.length; i++) {
        if (sheet.rules[i].selectorText === '#rule2 em') {        
            // console.log(sheet.cssRules[i]);
            sheet.removeRule (i);
        }
    } 
}