我要写一个四级菜单的导航菜单特效,要使js代码针对id分别为“Menu1”“Menu2”“Menu3”的div层。如下的代码只能针对“Menu1”,如果要针对“Menu2”“Menu3”也有效,就必须复制以下的js代码,并且相应地修改第一行代码document.getElementById("Menu1").getElementsByTagName("TR")中的“Menu1”为“Menu2”“Menu3”,这样代码就多了。我想问的是能不能修改以下代码,只写一段代码就可以批量适用于“Menu1”“Menu2”“Menu3”呢?var Els = document.getElementById("Menu1").getElementsByTagName("TR"); 
for (var i=0; i<Els.length; i++) { 
Els[i].onmouseover = function() { 
try { 
this.className += " Over" 
var Elzs = this.getElementsByTagName("TD"); 
Elzs[0].className += " OverTd" var Elzs = Elzs[1].getElementsByTagName("table"); 
Elzs[0].style.display = "block"; 
} catch(Err) { 


Els[i].onmouseout = function() { 
try { 
this.className = this.className.replace(/ *Over/, ""); 
var Elzs = this.getElementsByTagName("td"); 
Elzs[0].className = this.className.replace(/ *OverTd/, ""); 
var Elzs = Elzs[1].getElementsByTagName("table"); 
Elzs[0].style.display = "none"; 
} catch(Err) { 


解决方案 »

  1.   

    把ID用个变量传入到一个函数里面function SetMenu(id)
    {
    var Els = document.getElementById(id).getElementsByTagName("TR"); 
    for (var i=0; i<Els.length; i++) { 
    Els[i].onmouseover = function() { 
    try { 
    this.className += " Over" 
    var Elzs = this.getElementsByTagName("TD"); 
    Elzs[0].className += " OverTd" var Elzs = Elzs[1].getElementsByTagName("table"); 
    Elzs[0].style.display = "block"; 
    } catch(Err) { 


    Els[i].onmouseout = function() { 
    try { 
    this.className = this.className.replace(/ *Over/, ""); 
    var Elzs = this.getElementsByTagName("td"); 
    Elzs[0].className = this.className.replace(/ *OverTd/, ""); 
    var Elzs = Elzs[1].getElementsByTagName("table"); 
    Elzs[0].style.display = "none"; 
    } catch(Err) { 


    } }
      

  2.   

    感谢lianqin7,按照你的方法把代码修改好了。