的Javascript:在ID更改CSS子节点

问题描述:

答案或许是比较简单的,但我刚开始使用JavaScript和我似乎无法达到我的目的:的Javascript:在ID更改CSS子节点

我有这一块的CSS代码:

#tabmenu li a { 
background: #ACBACF; 
} 

现在我想改变背景,但不仅仅是#tabmenu,li或a,而是所有这些背景。 如何用Javascript做到这一点?

编辑: 这是一个带背景的按钮,我想知道如何更改css部分的值。所以它不仅是背景,而且还有填充和东西,但为了简单起见,让我们说我只是想用javascript改变背景。

HTML:

<ul id="tabmenu"> 
     <li> 
      <a href="#index">Home</a> 
     </li> 
</ul> 

编辑2: 我不能改变的HTML或CSS,因为我想创建一个userscript(Greasemonkey的)。

+1

你能定义它们吗? – PSL 2013-05-10 16:35:00

+0

请发布一些HTML代码,并更具体地说明你想达到的目标。 – gkalpak 2013-05-10 16:35:52

+0

那么一次为所有三个设置CSS,使用逗号来分辨它们 '#tabmenu,#tabmenu li,#tabmenu li a {background:#ACBACF;}' – gbtimmon 2013-05-10 16:40:48

我不认为直接从Javascript设置CSS是最好的方法。它导致大量的内联代码,并且不能很好地处理您在外部文件中定义的样式。在使用多字符串值时,在Javascript需要行结束

var style = document.createElement("style") 
style.setAttribute("type", "text/css"); 
style.innerHTML = "#tabmenu li a {\ 
    background: red;\ 
}"; 
document.getElementsByTagName("head")[0].appendChild(style) 

的“\”:如果你打算对CSS的沉重修改,我建议注射自定义样式标签的DOM内部。最后,如果你遵循这条路线,我会建议在文本编辑器中编写css代码,然后用类似https://csscompressor.net/(这会给你一个单行字符串)打包它并复制粘贴结果在括号之间。

+0

非常感谢!这个伎俩。这不是真正的“重大修改”,只是改变现有的CSS规则。无论如何,我可以继续我的剧本。再次感谢! – Tom 2013-05-10 17:28:56