2014-02-21 159 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>