我继承了别人的网站,我正在尝试解决为什么基于 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/