2010-03-22 127 views
0

我試圖創建一個自定義下拉,並使用下面的代碼工作得很好 - 只有一個問題是,如果我有多個下拉,所有鏈接只會激活第一個下拉。任何想法,我會如何解決這個問題? (是的,我知道口魚我只需要得到這個工作)自定義下拉

function toggle() { 
var ele = document.getElementById("dropdown-items"); 
var text = document.getElementById("dropdown-menu"); 
if(ele.style.display == "block") { 
     ele.style.display = "none"; 
    } 
else { 
    ele.style.display = "block"; 
} 
} 

HTML如下:

<div id="mainSearch"> 
      <div id="search-cat"> 
       <div class="search-title">Destination</div> 
        <div id="cat-dropdown"> 
        <a id="dropdown-menu" href="javascript:toggle();">Choose a Category...</a> 
        <div id="dropdown-items"> 
         <ul>   
           <li id="dropdown-list"><a href="">Category One</a></li> 
           <li id="dropdown-list"><a href="">Category Two</a></li> 
           <li id="dropdown-list"><a href="">Category Three</a></li> 
         </ul> 
        </div> 
       </div> 
      </div> 

      <div id="search-cat"> 
       <div class="search-title">Location</div> 
        <div id="cat-dropdown"> 
        <a id="dropdown-menu" href="javascript:toggle();">Choose a Location...</a> 
        <div id="dropdown-items"> 
         <ul>   
           <li id="dropdown-list"><a href="">Category One</a></li> 
           <li id="dropdown-list"><a href="">Category Two</a></li> 
           <li id="dropdown-list"><a href="">Category Three</a></li> 
         </ul> 
        </div> 
       </div> 
      </div> 
     </div> 
+0

什麼是HTML? – 2010-03-22 13:30:39

回答

1

有你的功能需要一個ID,並在元素ID傳爲特定菜單:

function toggle(menuId) { 
var ele = document.getElementById(menuId); 
if(ele.style.display == "block") { 
     ele.style.display = "none"; 
    } 
else { 
    ele.style.display = "block"; 
} 
} 

這樣你就可以使用每個菜單不同的ID並單獨引用各一個。

編輯

你不要在這裏需要太多不同的JavaScript。對於每一個下拉菜單,你只需要稍微改變的href:

<a id="dropdown-menu1" href="javascript:toggle('dropdown-menu1');">Choose a Category...</a> 

<a id="dropdown-menu2" href="javascript:toggle('dropdown-menu2');">Choose a Category...</a> 

調用toggle與菜單的id是指由上述修改toggle功能將切換你想要的確切菜單。

+0

明白了 - 現在我看到這裏發生了什麼!謝謝。 – Rob 2010-03-22 14:12:36

0

使切換功能接受ID作爲參數,那麼你可以使用切換功能爲所有項目。

function toggle(var1) { var ele = document.getElementById(var1);

1

我猜這是因爲你的ID引用下拉,我猜你所有的ID都是一樣的嗎?

HTML spec表示元素的ID屬性需要是唯一的,這可能是您遇到問題的原因。

如果你想有一個更簡潔的答案:)請張貼一些HTML

如果你要調整你的功能,使該元素的ID可以,因爲這將解決您的問題一個參數傳遞。

+0

是的,它們都是一樣的 - html 2 posts down – Rob 2010-03-22 13:48:09

0

您可以通過ID訪問您的下拉菜單,並且ID應該在HTML頁面中是唯一的。沒有更多的信息,我的猜測是你的問題在這裏。

+0

我從別人做過的舊項目中借用這段代碼,我可以改進它嗎? – Rob 2010-03-22 13:51:18

+0

是的,不要使用ID。使用其他選擇器。 – Nir 2010-03-22 13:52:22

+0

@Rob,真的,你最好使用某種類型的庫。 jQuery的例子,但也有其他人。該html代碼有錯誤,LIs都有相同的ID,這是禁止的。 – 2010-03-22 13:59:35