2013-05-10 86 views
0

答案或許是比較簡單的,但我剛開始使用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

回答

2

我不認爲直接從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