2013-05-06 59 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];