2011-08-21 74 views
2

下面我使用的JavaScript可以在单个onclick函数中正常工作。我同时需要两个onclick函数。在javascript中切换图层

// JavaScript Document 
var state = 'hidden'; 
function showhide(layer_ref) { 
    if (state == 'visible') { 
     state = 'hidden'; 
    } 
    else { 
     state = 'visible'; 
    } 
    if (document.all) { //IS IE 4 or 5 (or 6 beta) 
     eval("document.all." + layer_ref + ".style.visibility = state"); 
    } 
    if (document.layers) { //IS NETSCAPE 4 or below 
     document.layers[layer_ref].visibility = state; 
    } 
    if (document.getElementById && !document.all) { 
     maxwell_smart = document.getElementById(layer_ref); 
     maxwell_smart.style.visibility = state; 
    } 
} 

下面的HTML onclick工作正常。

<a href="#" onclick="showhide('sidebar')" ><img src="supports/images/cp.png" width="86" height="20" /></a> 

现在,我需要确切的语法来同时切换两个图层。我尝试使用下面的代码,但它不工作。任何人都可以为我纠正它。

<a href="#" onclick="showhide('sidebar'); showhide('div_menu');" ><img src="supports/images/cp.png" width="86" height="20" /></a> 

回答

1

试试看看这个代码。

<html> 
    <head> 
     <script type="text/javascript"> 
      var setT; 
      function toggle(id){ 
       var myDiv=document.getElementById(id); 
       if(myDiv.style.visibility=='hidden'||myDiv.style.visibility==''){ 
        myDiv.style.visibility='visible'; 
        setT = setTimeout('closeD("'+id+'")',3000) 
       } 
       else{closeD(id)} 
      } 
      function closeD(id){ 
       document.getElementById(id).style.visibility='hidden'; 
       if(setT){clearTimeout(setT)} 
      } 
     </script> 
    </head> 
    <body> 
     <a href="#" onClick="toggle('mydiv'); toggle('mydiv2')">show/hide</a> 
     <br> 
     <div id="mydiv">my div</div> 
     <div id="mydiv2">my div2</div> 
    </body> 
</html> 
0

不使用var state ='hidden',它是一个全局变量,使用state作为showhide的函数para。

+0

我没有得到你:-( – Mal

0

薯的意思是,只有一个state多数民众赞成被不同层之间的共享变量。

我不知道为什么你想要支持Netscape 4或IE 5这样的浏览器,但是如果你不会在博物馆或复古计算展览会上看到它们,我只是在使用HTML时(不是JS),因此,所有我能做的,只能是为所有现代浏览器中的一个片段,应说明考虑解决这个问题的最好办法:

// Reinvent jQuery's .toggle() without the years of polish and bugfixing 
function showhide(node_id) { 
    if (document.getElementById) { 
     node = document.getElementById(node_id); 
     state = node.style.visibility 

     if (state == 'visible') { 
      node.style.visibility = 'hidden'; 
     } else { 
      node.style.visibility = 'visible'; 
     } 
    } 
} 
+0

谢谢你的代码。 – Mal