Javascript 按名称获取CSS规则的索引

Javascript 按名称获取CSS规则的索引,javascript,css,dom,Javascript,Css,Dom,我试图在样式表中找到css规则.widget区域的索引 我就是这样做的,但它返回未定义的: 如果我省略.cssRules[“.widget area”]它将返回样式表的所有规则,但其中有数千条规则 有人知道怎么做吗? 谢谢。我认为您使用的是.cssRules函数,但它是一个对象。因此,如果要查找自定义规则,应使用以下内容: var targetRule; var rules = document.styleSheets[8].cssRules; for (i=0; i<rules.len

我试图在样式表中找到css规则
.widget区域的索引

我就是这样做的,但它返回
未定义的
:
如果我省略
.cssRules[“.widget area”]
它将返回样式表的所有规则,但其中有数千条规则

有人知道怎么做吗?
谢谢。

我认为您使用的是.cssRules函数,但它是一个对象。因此,如果要查找自定义规则,应使用以下内容:

var targetRule;
var rules = document.styleSheets[8].cssRules;

for (i=0; i<rules.length; i++){
  if (rules[i].selectorText.toLowerCase() == ".widget-area"){ 
    targetRule = rules[i];
    break;
  }
}
var目标;
var rules=document.styleSheets[8].cssRules;

对于(i=0;i
getStyleRuleIndexBySelector
函数将查找特定规则的索引。请注意,此函数仅按选择器进行搜索,并且每个选择器可能有多个规则

//创建一个伪样式表,我们将按值搜索一个键
var style=document.createElement(“样式”)
style.appendChild(document.createTextNode(“”)
document.head.appendChild(样式);
//插入一些规则
style.sheet.insertRule('.first{color:red}',style.sheet.cssRules.length);
style.sheet.insertRule('.second{color:green}',style.sheet.cssRules.length);
style.sheet.insertRule('div span a{color:blue}',style.sheet.cssRules.length);
style.sheet.insertRule('.second{display:none;left:1px;}',style.sheet.cssRules.length);
//遵守规则
var规则=style.sheet.cssRules;
函数getStyleRuleIndexBySelector(选择器,属性){
var结果=[],i,
值=(prop?selector+“{”+prop+“}”:选择器)。替换(//\s/g',),//删除空格
s=道具?“cssText”:“选择文本”;
对于(i=0;iconsole.log(getStyleRuleIndexBySelector('.second','display:none;left:1px;');
这似乎是个坏主意。最终目标是什么?
console.log(document.styleSheets[8])
并找出键的实际位置。@isherwood我需要动态删除试图查找其索引的css规则。父主题将频繁更新,我需要保持此特定规则处于非活动状态。它看起来非常脆弱。如果样式表中有任何更改,它就会中断。为什么不在普通ca中重写该类scade fashion?如果您需要保持某个特定规则处于非活动状态,是否可以简单地删除该规则?或者,根据
元素上的动态类,使用一个非常特定的选择器来应用该规则,可以将该规则从该元素中删除,以防止选择器匹配?正如isherwood所说,您似乎在关注这是一个脆弱而复杂的问题解决方案,比通过编程解析css更容易解决。感谢您的回答。我尝试了它,从控制台得到了这个“未捕获的TypeError:无法读取未定义的属性'toLowerCase'。知道为什么吗?
var targetRule;
var rules = document.styleSheets[8].cssRules;

for (i=0; i<rules.length; i++){
  if (rules[i].selectorText.toLowerCase() == ".widget-area"){ 
    targetRule = rules[i];
    break;
  }
}