2012-09-12 30 views
2

我有這樣的事情:修改內層標籤的CSS規則使用Javascript

-HTML-

<table> 
<tr class="x" onMouseOver="light(this)"> 
    <td> 
    <a href="x">Link</a> 
    </td> 
    <td> 
    Text 
    </td> 
</tr> 
</table> 

-CSS-

.x a{ 
    color: black; 
} 

-Javascript-

function light(x){ 
    x.style.color="red"; 
} 

現在,該功能正常工作,但我的標籤不會改變他的顏色。有沒有辦法讓Javascript修改CSS規則.x a的屬性顏色?

+1

你可以使用':當人們懸停鏈接hover'僞選擇,如果你只是改變顏色。 –

+0

因爲你的CSS直接爲'a'元素設計樣式,所以你必須使用javascript來直接設置'a'元素的樣式,以覆蓋CSS定義。這是其級聯性質的一部分。 – Shmiddty

+0

請參閱http://stackoverflow.com/questions/566203/changing-css-values-with-javascript – Lunik

回答

0

這可能是更適合的鏈接:

.x:hover {color:red} 
.x:hover a{color:red} 

這將覆蓋鏈接的顏色,當該行上空盤旋,使得onMouseOver功能是不必要的。

注意,它可能在IE6會失敗,但我個人從來沒有讓其他事情比鏈接在該瀏覽器:hover任何問題......

+0

IE6甚至不應該再被誠實地提及。只是要指出,但IE6及以下版本不支持僞類':hover'而不是標籤。 – Loktar

+0

這使得Javascript函數完全無用,並且效果更好! CSS的力量。謝謝 – Federinik

0

這應該做的伎倆

x.children[0].children[0].style.color="red"; 

您可以在CSS定義:hover風格的鏈接過於

a:hover { 
    color: red; 
} 

,當你在它懸停,這將改變鏈接的顏色(鏈接)。

.x:hover a { } 

將應用樣式,當你將鼠標懸停在.x

0

Live Demo

這將改變所有的鏈接那些孩子變紅了。

function light(x){ 
    var elems = x.getElementsByTagName("a"); 
    for(var i=0; i < elems.length;i++){ 
     elems[i].style.color="red"; 
    } 
}​ 

雖然我使用:hover僞類像其他人所說的強烈建議。

0

-HTML-將你的tr換成<table>標記,並將其轉換爲小寫的onmouseover事件屬性。

<table> 
<tr class="x" onmouseover="light(this)"> 
    <td> 
    <a href="x">Link</a> 
    </td> 
    <td> 
    Text 
    </td> 
</tr> 
</table> 

-Javascript-的JavaScript函數體選擇改變你a標籤

function light(x){ 
    x.getElementsByTagName("a")[0].style.color="red"; 
} 
+0

對不起,我忘了

標籤,我不敢用​​和以外的一張桌子 – Federinik