2011-07-06 123 views
0

我想將同一事件中的兩個元素傳遞給一個函數,以便在單擊鏈接按鈕時顯示這兩個元素。將兩個元素傳遞給函數

這是函數

function showMenu(elmnt) 
     { 
      document.getElementById(elmnt).style.visibility="visible"; 
     } 

這是兩個元件我想顯示。只顯示第一個。如何通過單擊按鈕同時顯示 。

<div id="navigation"> 
     <ul> 
      <li><a href="#" onClick="showMenu('scroll')" onClick="showMenu('oath')" >Oath</a></li> 
      <li><a href="#">Apply</a></li> 
     </ul> 
    </div> 

回答

2
function showMenu(elmnt1, elmnt2) { 
    document.getElementById(elmnt1).style.visibility="visible"; 
    document.getElementById(elmnt2).style.visibility="visible"; 
} 

onClick="showMenu('scroll', 'oath')" 

或:

function showMenu(elements) { 
    for (var i = 0; i < elements.length; i++) { 
     document.getElementById(elements[i]).style.visibility="visible"; 
    } 
} 

onClick="showMenu(['scroll', 'oath'])" 

這一切都可以通過附加使用Javascript等事件處理程序更加優雅的做,你應該看看unobtrusive Javascript

+0

也返回false – mplungjan

+0

第二個選項的變體是在函數中使用'arguments'對象,然後將其稱爲'showMenu('scroll,'oath');'。 – nnnnnn

+0

@nnnnnn - 查看我的答案 - 我更願意傳遞數組 – mplungjan

1

你不能只是使用onClick="showMenu('scroll', 'oath');return false;",然後具備的功能:

function showMenu(el1, el2) 
    { 
     document.getElementById(el1).style.visibility="visible"; 
     document.getElementById(el2).style.visibility="visible"; 
    } 

連接事件的最佳方法是使用addEventListener,而不是屬性。您需要使用attachEvent添加IE支持。 MDN - addEventListener()

+0

也返回false – mplungjan

+0

Tru e - 儘管由於'href'是'#',那麼不會有頁面重新加載。更新。 – detaylor

+0

有用是一個看不見的頁面卸載 - 我只是試了一下,似乎你是正確的Fx5至少http://jsfiddle.net/mplungjan/EUheF/ - 但嘗試點擊小提琴底部的鏈接現在 – mplungjan

1
function showMenu(elmnt1, elmnt2) 
{ 
    document.getElementById(elmnt1).style.visibility="visible"; 
    document.getElementById(elmnt2).style.visibility="visible"; 
} 

<li><a href="#" onclick="showMenu('scroll', 'oath'); return false;">Oath</a></li> 

return false是停止標準事件的鏈接擊球時,瀏覽器將執行。

+0

至少你返回false。 – mplungjan

0

嘗試這樣的事:

function showMenu(elmnt1, elmnt2) 

{ 

document.getElementById(elmnt1).style.visibility="visible"; 
      document.getElementById(elmnt2).style.visibility="visible"; 

} 

<li><a href="#" onClick="showMenu('scroll', 'oath')">Oath</a></li> 
+0

縮進你的代碼兩個空格!閱讀編輯屏幕上的幫助。 – deceze

+0

4個空格 - 但更易於突出顯示並單擊{} – mplungjan

+0

也會返回false – mplungjan

1

傳遞一個數組,所以我們可以有一個 「上」 作爲第二個參數

function showHide(elmnt,on) { 
    if (elmnt.length==null) elmnt=[elmnt]; 
    for (var i=0,n=elmnt.length;i<n;i++) { 
    var item = document.getElementById(elmnt[i]); 
    if (item) item.style.visibility=on?"visible":"hidden"; 
    } 
    return false; 
} 

多:

<a href="#" onclick="return showHide(['scroll','oath'],1)">Show</a> 
<a href="#" onclick="return showHide(['scroll','oath'],0)">Hide</a> 

單品:

<a href="#" onclick="return showHide('scroll',1)">Show</a> 
<a href="#" onclick="return showHide('scroll',0)">Hide</a> 

可替代地,上傳遞作爲第一個參數,並如別處建議的,循環在arguments object對象從第1項

function showHide() { 
    var on = arguments[0] 
    for (var i=1,n=arguments.length;i<n;i++) { // from 1 
    var item = document.getElementById(arguments[i]); 
    if (item) item.style.visibility=on?"visible":"hidden"; 
    } 
    return false; 
} 


<a href="#" onclick="return showHide(1,'scroll','oath')">Show</a> 
<a href="#" onclick="return showHide(0,'scroll','oath')">Hide</a> 

最後(進入jQuery的領土在這裏)傳遞一個對象允許選擇性打開和關閉

function showHide(obj) { 
    for (var o in obj) { 
    var item = document.getElementById(o); 
    if (item) item.style.visibility=obj[o]?"visible":"hidden"; 
    } 
    return false; 
} 


<a href="#" onclick="return showHide({'scroll':1,'oath':0})">Show scroll, hide oath</a> 
<a href="#" onclick="return showHide({'scroll':0,'oath':1})">Hide scroll, Show oath</a> 
相關問題