2014-02-21 220 views
0

我想更改我的<ul class="menu">中所有鏈接的顏色,但它不會改變我的顏色。我是一個完整的JavaScript初學者,我正在做一些練習。更改所有鏈接的顏色

<ul class="menu">

<ul class="menu"> 
<li><a href="">hello</a></li> 
<li><a href="">hello</a></li> 
<li><a href="">hello</a></li> 
<li><a href="">hello</a></li> 

我在做什麼錯在我的javascript?

 var x=document.getElementByClass("menu"); 
     if(x){ 
      var e =x.getElementsByTagName("a"); 
      for(var i=0; i<e.length; i++){ 
       e[i].style.color='yellow'; 
      } 
     } 
+3

有沒有功能'getElementByClass'。它是'getElementsByClassName'。 – Barmar

+2

該文本是鏈接之外的,所以你改變了什麼顏色? – malkassem

+0

@Barmar仍然無法正常工作。 – Loko

回答

5

你需要調用的函數是getElementsByClassName。它返回一個NodeList,所以你必須迭代結果。

var menus = document.getElementsByClassName("menu"); 
for (var j = 0; j < menus.length; j++) { 
    var e = menus[j].getElementsByTagName("a"); 
    for(var i=0; i<e.length; i++){ 
     e[i].style.color='yellow'; 
    } 
} 

jsFiddle

+0

這就是我要找的。謝謝你不知道。 – Loko

+1

由於可以(通常是)具有相同類名的多個元素,它還能如何工作? – Barmar

+0

是的,這是我認爲它沒有工作,因爲多元素。不知道該怎麼做,但並不確定這是否是問題所在。 – Loko

0

你正在尋找的功能是:getElementsByClassName()

var x=document.getElementsByClassName("menu"); 
+0

不適合我。 – Loko

+0

此功能僅在現代瀏覽器中受支持。如果您運行的是較舊的瀏覽器,則此功能無法使用。 – StephenRios

+0

順便說一下'元素'不'元素'''getElementsByClassName' – DontVoteMeDown

2

我建議你看一些可用於任何瀏覽器,您正在使用的開發工具(如螢火蟲)。他們中的許多人都有一個控制檯,允許您在當前正在查看的頁面上運行JavaScript。

如果你曾試圖在螢火蟲控制檯(它只是我最熟悉的那個)中運行你的代碼,它會給你一個錯誤,告訴你getElementByClass不是一個函數。

如果沒有別的,那麼這樣做可以幫助您瞭解至少在哪裏有大量的javascript錯誤。

但是,是的,你的問題是,你正在尋找函數getElementsByClassName而不是getElementsByClass。

另外,我假設你希望你的錨標籤內的「你好」 S:

<ul class="menu"> 
<li><a href="">Hello</a></li> 
<li><a href="">hello</a></li> 
<li><a href="">hello</a></li> 
<li><a href="">hello</a></li>