2013-05-06 77 views
0

我试图找出什么是错,此代码:的JavaScript - 变量没有定义

function toggle_visibility() { 
    var dropDownNav = document.getElementsByClassName("dropDownNav"); 
    if (dropDownNav.style.display == 'block') e.style.display = 'none'; 
    else dropDownNav.style.display = 'block'; 
} 

的HTML是这样的:

<a class="dropDownNavButton" href="#" onclick= 
"toggle_visibility(dropDownNav)"><img alt="menu icon" src= 
"img/navIcon.png"></a> 

<ul class="dropDownNav"> 
    <li class="liWorks"> 
     <a href="works.html">Works</a> 
    </li> 

    <li class="liAbout"> 
     <a href="#">About</a> 
    </li> 

    <li class="liContact"> 
     <a href="contact.html">Contact</a> 
    </li> 

    <li class="liBlog"> 
     <a href="#">Blog</a> 
    </li> 
</ul> 

然而镀铬告诉我: 未捕获的ReferenceError :dropDownNav没有定义 onclick

有人能告诉我方式吗?


非常感谢所有快速回答!第一次使用stackoverflow,绝对不是最后一次。它终于奏效了,我为数组添加了索引[0],并在onClick函数中删除了dropDownNav。唯一的问题是,我希望dropDownNav显示在我再次点击时回到没有显示。任何线索?

+0

用'dropDownNav [0] .style.display'试试吧数组的第一个元素 – sebastian 2013-05-06 11:02:55

+0

为什么你传递未定义的'dropDownNav'到'toggle_visibility'? – VisioN 2013-05-06 11:03:27

+0

您还必须将'var dropDownNav = document.getElementsByClassName(“dropDownNav”);'移到函数之外。 – thebreiflabb 2013-05-06 11:04:07

回答

5

document.getElementsByClassName()返回与类名匹配的所有元素的HTMLCollection(类似于数组)。样式属性未定义为HTMLCollection,但对于元素。获得使用

var dropDownNav = document.getElementsByClassName("dropDownNav")[0];