javascript - 动态更改样式表规则选择器

标签 javascript styles

这是如何动态更改选择器规则的简化版本:

http://jsfiddle.net/vsync/SaQy6/

对于给予者内联样式:

<style type='text/css' id='myStyle'>
    ul > li{}
</style>

尝试更改选择器

var styleTag = document.querySelector('#myStyle');
// the style sheet in the style tag
var sheet = styleTag.sheet ? styleTag.sheet : styleTag.styleSheet,
    // the first rule in the style sheet
    rules = sheet.cssRules ? sheet.cssRules : sheet.rules;

rules[0].selectorText = 'ul > li:nth-child(2)';
rules[0].style.cssText = 'background:red';

selectorTextcssText 都无法动态设置选择器。

然后我在 MDN 上读到 selectorText 是只读的,我不知道如何实际更改选择器,而不必删除整个样式元素并创建一个新元素。 可以选择完全删除规则并插入新规则,但这是非常不标准的。有什么想法吗?

最佳答案

演示 - http://jsfiddle.net/vsync/SaQy6/6/

跨浏览器方式:

var styleTag = document.querySelector('#myStyle');
// the style sheet in the style tag
var sheet = styleTag.sheet ? styleTag.sheet : styleTag.styleSheet,
    rules = sheet.cssRules ? sheet.cssRules : sheet.rules;

if( sheet.cssRules ){
    sheet.deleteRule(0); // deletes a rule at index 0
    sheet.insertRule("ul > li:nth-child(2n){background:red}", 0);
}
else{
    sheet.removeRule(0); // deletes a rule at index 0
    sheet.addRule("ul > li:nth-child(2n)", 'background:red', 0);
}

关于javascript - 动态更改样式表规则选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23572766/

相关文章:

html - 圆圈css3问题中的中心文本

android - 如何设置 Android 的 onSearchRequested() 样式;

javascript - 如何将url中的变量php获取到javascript

javascript - 在 REACT 组件内使用 &lt;script&gt; 标签渲染 HTML

javascript - 关于 css 中显示属性更改的 Chrome I JavaScript 问题

c# - 样式 TreeView 标题。设置标题不可选择

wpf - 如何使用正确的 Windows 系统颜色?

javascript - 向数组 React 添加一个对象; "TypeError: Cannot read property ' push' of undefined"

javascript - 动态 Accordion 很有趣。所有其他元素都被视为内容,并且内容未被解析。为什么?

javascript - 如何使用 id 显示此模式中的 .php 文件?