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

标签 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 经验的人能告诉我什么能让这段代码在最新的浏览器上工作吗?

最佳答案

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

关于Javascript 无法读取未定义的属性 'document',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22898152/

相关文章:

javascript - AngularJS 未知提供商 : $routeProviderProvider

javascript - html2canvas 不使用 firefox 下载图像

javascript - 为什么第二个按钮在这里没有做任何事情?

html - 如何在没有表格的情况下将内容彼此相邻放置?

html - 光滑的径向渐变边缘我卡住了

javascript - 如果你的代码库有 curry 函数,为什么要写闭包?

php - 如何使用 php 和 html 根据组合框选择的变化自动更改输入文本框的值

javascript - 使用内联匿名函数时删除事件监听器

html - Flexbox 在重新加载后改变大小

javascript - 两个不同的 Bootstrap 菜单在同一个按钮上折叠