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

Javascript Cannot read property 'document' of undefined

本文关键字:属性 文档 未定义 读取 Javascript      更新时间:2023-09-26

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

代码,通过包含的菜单.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

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

我猜它来自document.menuSpan.document操作之一。 document.menuSpan可能未定义。它不是任何 API 的一部分。