1

您将如何从中删除 00bf00 部分:

#main { background:#00bf00 00bf00 url('images/low.png') repeat;  }  

我需要动态地做到这一点,所以可能是javascript(或者如果你有想法的话)

我不想更改代码以正确输出,只是想看看是否有办法通过添加代码片段来删除它

4

4 回答 4

2
// for imported stylesheets
var cssRules = [];
for (var i = 0, il = document.styleSheets.length; i < il; i++) {
    if (document.styleSheets[0].cssRules)
        cssRules = document.styleSheets[0].cssRules;
    else if (document.styleSheets[0].rules)
        cssRules = document.styleSheets[0].rules​;
    for (var j = 0, jl = cssRules.length; j < jl; j++) {
        if (/^#main/.test(cssRules[j].cssText))
            cssRules[j].cssText = cssRules[j].cssText.replace(/[^#]00bf00/, '');
    }
}

// for style tags
​var styleTags = document.getElementsByTagName('style');
for (var i = 0, il = styleTags.length; i < il; i++) {
    styleTags[i].innerHTML = styleTags[i].innerHTML
                                         .replace(/(#main.*)[^#]00bf00/, '$1');
}​​

查看演示(用于样式标签)

于 2012-06-10T00:40:57.753 回答
0

您不能直接在head标签内修改 css 属性,试试这个:

$('#main').css('background-color', "transparent");

或者:

document.getElementById('main').style.backgroundColor = 'transparent';
于 2012-06-09T22:10:59.507 回答
0

正如昆汀所说,浏览器可能已经删除了这条规则,所以你不能真正编辑它。

另一方面,您可以查看客户端 css 解析。LESS 有一个客户端版本的 CSS 处理器,它本质上是查看可用的 CSS 源代码,并在将其返回给浏览器之前对其进行修改。LESS 源代码是开源的,因此您可以看到它是如何做到的。不幸的是,这是一个相当复杂的过程,并且对于这样的事情来说太过分了。在将 CSS 交付给浏览器之前修复它会更好。

于 2012-06-09T22:14:56.357 回答
0

如果您只想更改已经存在的元素的样式,那么只需执行

document.body.style.background = '#00bf00 url(\'images/low.png\') repeat';

如果您需要更改样式本身以使其适用于未来的元素,则使用正确的值覆盖选择器。

$('head').append('<style>#main { background:#00bf00 url(\'images/low.png\') repeat;  }  </style>')

(本例假设现有样式在头部,所以在现有样式之后插入新样式)

于 2012-06-10T00:25:09.933 回答