压倒一切!重要的风格

Enr*_*ico 115 javascript css

标题几乎总结了它.

外部样式表具有以下代码:

td.EvenRow a{
  display: none !important;
}
Run Code Online (Sandbox Code Playgroud)

我尝试过使用:

element.style.display = "inline";
Run Code Online (Sandbox Code Playgroud)

element.style.display = "inline !important";
Run Code Online (Sandbox Code Playgroud)

但都不起作用.是否可以使用javascript覆盖!important样式.

如果这会产生影响,那么这就是一个关键的扩展.

Pre*_*gar 223

您可以使用几个简单的单行来完成此操作.

1)在元素上设置"style" 属性:

element.setAttribute('style', 'display:inline !important');
Run Code Online (Sandbox Code Playgroud)

要么...

2)修改对象的cssText属性style:

element.style.cssText = 'display:inline !important';
Run Code Online (Sandbox Code Playgroud)

要么做好这个工作.

===

顺便说一句 - 如果你想要一个有用的工具来操作!important元素中的规则,我写了一个名为"important"的jQuery插件:http://github.com/premasagar/important

  • 为了防止覆盖其他属性,你需要使用`element.style.cssText + ='; display:inline!important;';` (46认同)
  • 这是一个比选定的答案更好的答案,当然,+1可以让它更高. (4认同)
  • @ user123444555621,Premasagar.不妨使用更好的选项:`element.style.setProperty`. (2认同)

sth*_*sth 158

element.style有一个setProperty方法可以优先作为第三个参数:

element.style.setProperty("display", "inline", "important")
Run Code Online (Sandbox Code Playgroud)

在旧的IE中不起作用,但它在当前的浏览器中应该没问题.

  • 我很惊讶它在IE中不起作用!:d (18认同)
  • 适用于IE 9 https://msdn.microsoft.com/en-us/library/ie/ff975226%28v=vs.85%29.aspx (3认同)
  • 最好的解决方案,因为它不会覆盖整个样式属性,而是W3C意味着它的工作方式. (3认同)

Jam*_*mes 47

我相信这样做的唯一方法就是将样式添加为带有'!important'后缀的新CSS声明.最简单的方法是在文档头部附加一个新的<style>元素:

function addNewStyle(newStyle) {
    var styleElement = document.getElementById('styles_js');
    if (!styleElement) {
        styleElement = document.createElement('style');
        styleElement.type = 'text/css';
        styleElement.id = 'styles_js';
        document.getElementsByTagName('head')[0].appendChild(styleElement);
    }
    styleElement.appendChild(document.createTextNode(newStyle));
}

addNewStyle('td.EvenRow a {display:inline !important;}')
Run Code Online (Sandbox Code Playgroud)

使用上述方法添加的规则(如果使用!important后缀)将覆盖其他先前设置的样式.如果您没有使用后缀,请务必考虑" 特异性 " 等概念.

  • 这可以用单线代替.请参阅以下内容:http://stackoverflow.com/questions/462537/overriding-important-style-using-javascript/1577204#1577204 (8认同)
  • 您将如何找到实际上触发样式的选择器?我认为这需要解析所有样式表,这是一项艰巨的工作。 (2认同)