日期:2014-05-16  浏览次数:20419 次

爲什麽這樣做會提示缺少對象啊?
JScript code

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";
      }
    }
  }
})()




不用匿名函數就可以正常執行

------解决方案--------------------
因为你的$函数写错了
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";
}
}
}
})()





------解决方案--------------------
或者:
var $=function(ID){return document.getElementById(ID);};

------解决方案--------------------
探讨
或者:
var $=function(ID){return document.getElementById(ID);};

------解决方案--------------------
})() 最后}好像多了。。。





------解决方案--------------------
一般在匿名函数前面加个分号,以避免上行结尾没打分号而引起错误

;(function(){
//code
})()