帮忙看段代码如何改才能支持火狐浏览器

冰川711 2010-09-13 01:54:22

<script language=javascript>
function secBoard(n,menuT,mainT,sec1T,sec2T)

{

for (i = 0; i < menuT.childNodes.length; i++) {
menuT.childNodes[i].className = sec1T;
menuT.childNodes[n].className = sec2T;
}
for (i = 0; i < mainT.childNodes.length; i++) {
mainT.childNodes[i].style.display = "none";
mainT.childNodes[n].style.display = "block";
}
}
</script>



这段代码 是控制菜单的 显示隐藏的! IE下一切正常 火狐浏览器不行 帮忙看下 该如何修改
...全文
120 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
kongxh1218 2010-09-13
  • 打赏
  • 举报
回复
主要是childNodes的问题,比如:
<div id="main">
<div>1</div>
</div>
document.getElementById("main").childNodes.length = 2;
因为“1”在火狐中是被当做一个文本节点

要兼容最好使用jquery,下面代码没有测试,你可以试一下
function secBoard(n,menuT,mainT,sec1T,sec2T)
{
// 假设你的菜单标签是Div
var sMenuT = $(menuT).find("> div"); // 获取主菜单下的子元素,孙元素不会被获取到
$.each(sMenuT, function(){
$(this).attr("class", sec1T);
});
sMenuT[n].attr("class", sec2T);

var sMainT = $(mainT).find("> div");
$.each(sMainT, function(){
$(this).css("display", "none");
});
sMainT[n].css("display", "block");
}
wz_307 2010-09-13
  • 打赏
  • 举报
回复
可能性1:
LZ请看这里http://bianbian.org/technology/21.html 看看是否是childNodes的问题

2:
同2L所说, menuT是如何传入的? 如果是document.all.menuT的话 那么只有IE能支持. 在传入的时候请细写为document.getElementById("xxxx");
Crazywa 2010-09-13
  • 打赏
  • 举报
回复
menuT 通过 document.getElementById()获取,不要直接使用id
root_lee 2010-09-13
  • 打赏
  • 举报
回复
将childNodes改为children试试

87,904

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧