var $=function(ID){return document.getElementById(ID);}
(function(){
  var obj=$("menu");
  var mli=obj.getElementsByTagName("li");
  for(var i=0;i<mli.length;i++){
    if(mli[i].getElementsByTagName("ul")[0]){
  mli[i].onmouseover=function(){
    this.getElementsByTagName("ul")[0].style.display="block";
  }
  mli[i].onmouseout=function(){
    this.getElementsByTagName("ul")[0].style.display="none";
  }
}
  }
})()不用匿名函數就可以正常執行

解决方案 »

  1.   

    因为你的$函数写错了
    var $=function(ID)({return document.getElementById(ID);});
    (function(){
      var obj=$("menu");
      var mli=obj.getElementsByTagName("li");
      for(var i=0;i<mli.length;i++){
        if(mli[i].getElementsByTagName("ul")[0]){
          mli[i].onmouseover=function(){
            this.getElementsByTagName("ul")[0].style.display="block";
          }
          mli[i].onmouseout=function(){
            this.getElementsByTagName("ul")[0].style.display="none";
          }
        }
      }
    })()
      

  2.   

    抱歉 因该是
    var $=(function(ID){return document.getElementById(ID);});
      

  3.   

    或者:
    var $=function(ID){return document.getElementById(ID);};
      

  4.   

    一般在匿名函数前面加个分号,以避免上行结尾没打分号而引起错误;(function(){
    //code
    })()