emfox
小狐狸
小狐狸
  • UID2942
  • 注册日期2005-02-11
  • 最后登录2005-09-04
  • 发帖数1
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
阅读:3655回复:1

帮忙看看这个非标准的网页....

楼主#
更多 发布于:2005-02-11 19:36
某大学的选课网站,似乎是没有用getElementByID来做?Firefox不能弹出菜单,Opera和IE都可以

主页相关代码:

...................
<SCRIPT language="javascript" src="Menu.js"></SCRIPT>
...................
<table id="mainmenu" class="MainMenuBar"><tr><td nowrap id='MainMenuN1211' class='MainMenu' onMouseOver="showmenu('MainMenuN1211','SubMenuN1211' );" onmouseout="hidemenu('MainMenuN1211','SubMenuN1211');">网上选课</td><td nowrap class='MenuTd' valign='middle'></td><td nowrap id='MainMenuN1214' class='MainMenu' onMouseOver="showmenu('MainMenuN1214','SubMenuN1214' );" onmouseout="hidemenu('MainMenuN1214','SubMenuN1214');">教学质量评价</td><td nowrap class='MenuTd' valign='middle'></td><td nowrap id='MainMenuN1215' class='MainMenu' onMouseOver="showmenu('MainMenuN1215','SubMenuN1215' );" onmouseout="hidemenu('MainMenuN1215','SubMenuN1215');">信息维护</td><td nowrap class='MenuTd' valign='middle'></td><td nowrap id='MainMenuN1216' class='MainMenu' onMouseOver="showmenu('MainMenuN1216','SubMenuN1216' );" onmouseout="hidemenu('MainMenuN1216','SubMenuN1216');">信息查询</td><td nowrap class='MenuTd' valign='middle'></td><td nowrap id='MainMenuN1231' class='MainMenu' onMouseOver="showmenu('MainMenuN1231','SubMenuN1231' );" onmouseout="hidemenu('MainMenuN1231','SubMenuN1231');">公用信息</td><td nowrap class='MenuTd' valign='middle'></td><td nowrap width='100%'></td></tr></table>

<table cellpadding='3' cellspacing='0' border='0' id='SubMenuN1211' class='subMenuBar' onMouseOver="showmenu('MainMenuN1211','SubMenuN1211');" onmouseout="hidemenu('MainMenuN1211','SubMenuN1211');"><tr><td name='zhjN121101' class='SubMenu' onMouseOver='doColor(this);' onMouseOut='undoColor(this);'><a href="xsxk.aspx?xh=3021021040" target='_blank'>学生选课</a></td></tr><tr><td name='zhjN121103' class='SubMenu' onMouseOver='doColor(this);' onMouseOut='undoColor(this);'><a href="xscxbm.aspx?xh=3021021040" target='_blank'>按条件选课</a></td></tr><tr><td name='zhjN121104' class='SubMenu' onMouseOver='doColor(this);' onMouseOut='undoColor(this);'><a href="rlymsq.aspx?xh=3021021040" target='_blank'>教学班补选申请</a></td></tr><tr><td name='zhjN121106' class='SubMenu' onMouseOver='doColor(this);' onMouseOut='undoColor(this);'><a href="xsxkdl.aspx?xh=3021021040" target='_blank'>学科导论查询及选课</a></td></tr><tr><td name='zhjN121109' class='SubMenu' onMouseOver='doColor(this);' onMouseOut='undoColor(this);'><a href="xsyxxxk_zd.aspx?xh=3021021040" target='_blank'>院系选修课预选</a></td></tr></table>
...................................


Menu.js文件内容:
function findObj(n, d) {
    var p,i,x;  
    if(!d) d=document; 
    if((p=n.indexOf('?'))>0&&parent.frames.length) {
        d=parent.frames[n.substring(p+1)].document; 
        n=n.substring(0,p);}
    
    if(!(x=d[n])&&d.all) x=d.all[n]; 
    for (i=0;!x&&i<d.forms.length;i++) 
        x=d.forms[i][n];
    
    for(i=0;!x&&d.layers&&i<d.layers.length;i++) 
        x=findObj(n,d.layers[i].document); 
    
    return x;
}

function showmenu(main,menuid) {
    obj1=findObj(main);
    obj2=findObj(menuid);
    if (obj1.style) 
        obj2=obj2.style;
    obj2.top=document.all.menu.offsetTop+20;
    obj2.left=obj1.offsetLeft+8;
    obj2.visibility='visible';
}
 
function hidemenu(main,menuid){
    obj2=findObj(menuid);
    if (obj1.style) 
        obj2=obj2.style;

    obj2.visibility='hidden';
}

function doColor(item) {
    item.bgColor = '#8B8B8B';
}

function undoColor(item) {
    item.bgColor = '#DFDFDF';
}


不知有没有人肯烦心告诉我怎么改,我好发信过去折腾......
//bow~~~~
猫头猪
狐狸大王
狐狸大王
  • UID163
  • 注册日期2004-11-25
  • 最后登录2005-12-04
  • 发帖数595
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
1楼#
发布于:2005-02-11 19:36
主要需要修改findobj函数。
目前这个函数的两个分支一个使用了document.all一个使用了layers,两者都不标准。前者是IE Only后者是Netscape 4.x Only。

return x;前加一句 if(!x) x=document.getElementById(n);试一试。我这是偷懒的改法。
游客

返回顶部