Javascript无法读取属性'文档'未定义的

时间:2014-04-06 18:31:43

标签: javascript html css

我继承了别人的网站,我正在尝试解决为什么基于javascript的翻转菜单除了IE(启用兼容性模式)之外什么都不起作用。

代码,通过包含的menu.js:

function goMenu(m,n){
 if(n){
  showMenu(m);
 }else{
  hideMenu(m,n);
 }
}

function showMenu(m) {
   for(i=0;i<6;i++){
      if (i!=m){
         hideMenu(i);
      }
   }

   if(document.all){
      eval('document.all.menu'+m+'.style.visibility="visible"');
   }else{
      eval('document.menuSpan.document.menu'+m+'.visibility="show"');
   }
}

function hideMenu(m) {
   if(document.all){
      eval('document.all.menu'+m+'.style.visibility="hidden"');
   }else{
      eval('document.menuSpan.document.menu'+m+'.visibility="hide"');
   }
}

然后HTML文件中的代码是基本的

<SPAN ID="menu0" ONMOUSEOUT="goMenu(0,0);" ONMOUSEOVER="goMenu(0,1);">
     <LAYER ONMOUSEOUT="goMenu(0,0);">
     ...
     </LAYER>
</SPAN>

这在IE中运行良好多年(最新版本需要启用兼容性模式),而且我从未在Firefox或Chrome中工作过。现在,企业主希望我在所有浏览器中都能使用它。我不是一个真正的javascript人,所以我不确定javascript控制台的错误是什么意思:

From IE:
Unable to get property 'document' of undefined or null reference

From Chrome:
Uncaught TypeError: Cannot read property 'document' of undefined

我试过调整menu.js中的代码,但无济于事。有任何Javascript经验的人能够告诉我什么会使这个代码适用于最新的浏览器,如果有的话?

1 个答案:

答案 0 :(得分:0)

我猜它来自document.menuSpan.document个操作之一。 document.menuSpan可能未定义。它不属于任何API。