2013-05-09 286 views
1

HTML是這樣的:通過ID更改標籤的背景顏色

 <div class="header"> 
<ul> 
    <li> 
    <a class="abc" id="abc" href="www.testing.com">testing</a> 
    </li> 
</ul> 
</div> 

我的JavaScript是這樣的:

<script language="javascript" type="text/javascript"> 
var links = document.getElementById("abc"); 
var a = links.getElementsByTagName("a"); 
var thisLocationHref = window.location.href; 
for(var i=0;i<a.length;i++) 
{ 

    var tempLink = a[i];  

    if(thisLocationHref === tempLink.href) 
    { 
     tempLink.style.backgroundColor="red"; 
    } 
    else 
    { 
     tempLink.style.backgroundColor="blue"; 
    } 
} 

,因爲它涉及另一頁,我不能在標籤刪除ID。 我知道代碼有問題,但無法弄清楚在哪裏。 歡迎任何幫助! 謝謝!

+0

我想這只是你的例子中的一個錯字,但在a-tag中沒有href – RST 2013-05-09 00:09:54

+0

哦,是的。我忘了添加href鏈接...我已經添加了。謝謝。 – Pluto 2013-05-09 00:12:42

回答

0

給這個id="abc"ula標籤,刪除它,你的代碼將工作。

演示:http://jsfiddle.net/BgbjD/

從MDN:

element.getElementsByTagName

返回具有給定標記名稱的元素列表。搜索指定元素下的子樹 ,排除元素 本身。

所以你必須搜索ul節點。

<div class="header"> 
    <ul id="abc"> 
     <li> <a class="abc">testing</a> 
     </li> 
    </ul> 
</div> 

您的JavaScript不需要任何更改。

+0

我在ul中添加了另一個ID,它可以工作。感謝您的幫助。 – Pluto 2013-05-09 00:22:06

+0

不客氣。很高興爲您提供幫助。 – Arbel 2013-05-09 00:29:39

0

style.backgroundstyle.backgroundColor

var links = document.getElementById("abc"); 
var a = links.getElementsByTagName("a"); 
var thisLocationHref = window.location.href; 
for (var i = 0; i < a.length; i++) { 

    var tempLink = a[i]; 

    if (thisLocationHref === tempLink.href) { 
     tempLink.style.backgroundColor = "red"; 
    } else { 
     tempLink.style.backgroundColor = "blue"; 
    } 
} 
+0

感謝您的幫助,但它仍然無法正常工作。由於該類位於標記中,因此我認爲循環中或getElementsByTagName中存在錯誤。 – Pluto 2013-05-09 00:14:27