javascript - 在没有 jQuery 的情况下选择所有具有特定 css 规则的节点

标签 javascript css selection

如何获取所有具有特定 CSS 规则的节点,例如如果已定义:

html {
  color: blue;
}
div.x {
  color: blue;
}

我想获取所有具有color: blue 的节点,我想获取html (document.children[0] ) 以及仅具有 class='x' 节点的所有 div,而不是所有受该规则影响的子节点。

编辑 最终目标是从网站中删除某些 css 规则,我试过这个脚本但在 Chrome 上不起作用:

var xRules = ['userSelect','webkitTouchCallout','webkitUserSelect','khtmlUserSelect','mozUserSelect','msUserSelect'];
var dS = document.styleSheets;
for(var z in dS) {
  var dsz = dS[z].cssRules;
  if(!dsz) continue;
  for(var y in dsz) {
    var dszy = dsz[y].style;
    if(!dszy) continue;
    console.log(dszy.webkitUserSelect);
    for(var x in xRules) {
      var xx = xRules[x];
      dszy.removeProperty(xx);
    }
  }
}

所以我能想到的就是我必须找到元素然后删除样式。

最佳答案

您可以使用 document.styleSheets 读取加载的 css 规则。然后,找到设置特定属性的规则,在您的例子中是 style.color == "blue"

然后,从规则中获取 selectorText,它将为您提供选择器。然后使用 document.querySelector() 将获得的选择器作为参数传递,就可以很容易地选择元素。

var classes = document.styleSheets[0].rules || document.styleSheets[0].cssRules;
for (var x = 0; x < classes.length; x++) {
  var cls = classes[x];
  if(cls.style.color == "blue") {
    alert(cls.selectorText);
    
    //Gets a node list of the elements matching the selector
    var elements = document.querySelectorAll(cls.selectorText);
  }
}
html {
  color: blue;
}
div.x {
  color: blue;
}

关于javascript - 在没有 jQuery 的情况下选择所有具有特定 css 规则的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28477810/

相关文章:

javascript - 这个使用 javascript 的 css3 动画的无限循环不能正常工作并且运行有延迟?

WinForms 数值向上向下 : Is there a way to read the info about text selection?

java - Jtree根据鼠标点击获取对象?

ios - 可选择 UITextView 链接,而无需选择其余文本

javascript - x 的值应该是多少?

Javascript 递归父​​ -> 子 -> 父 -> 子引用,我需要使用替代方法吗?

javascript - 如何从 NodeJS 中传入的 http 请求中手动提取上下文或跨度?

jquery - 动态增加 Left 属性

css - imagemagick command-line -shadow like photoshop inner-shadow 问题

javascript - 在数据表列中设置复选框的样式