1、parentElement 是IE的,firefox的是parentNode
2、previousSibling是IE的,firefox的是previousElementSibling
3、nextSibling是IE的,firefox的是nextElementSibling可以看下这个帖子的说明
http://frieboy168.blog.163.com/blog/static/3554449120113145174866/
http://blog.csdn.net/zhouyong0/article/details/6371253里面介绍了一些标准的写法,你可以根据这个修改下你的这个代码(我试过了,貌似不兼容,也没有太多时间去尝试)
JS里面你可以这样写 var otrmenu = otr.nextSibling || otr.nextElementSibling;
这个可以参考下面的帖子看看
http://www.jb51.net/article/4338.htm最好的办法是用jquery等的去重构一下你的这个,那样的话兼容性就不用你去关注了。
2、previousSibling是IE的,firefox的是previousElementSibling
3、nextSibling是IE的,firefox的是nextElementSibling可以看下这个帖子的说明
http://frieboy168.blog.163.com/blog/static/3554449120113145174866/
http://blog.csdn.net/zhouyong0/article/details/6371253里面介绍了一些标准的写法,你可以根据这个修改下你的这个代码(我试过了,貌似不兼容,也没有太多时间去尝试)
JS里面你可以这样写 var otrmenu = otr.nextSibling || otr.nextElementSibling;
这个可以参考下面的帖子看看
http://www.jb51.net/article/4338.htm最好的办法是用jquery等的去重构一下你的这个,那样的话兼容性就不用你去关注了。
解决方案 »
- 高分!谁有传智播客11年或者12年的就业班视频啊
- Spring整合Hibernate(都是Annotation方式),无法注入的问题
- spring的这种事务声明方式中怎么配置rollback-for的Exception?
- 各位大哥有没有谁做过多张图片同时上传的例子
- 【推荐】目前我在学jquery,请给位给点意见!(100分)
- 提供SSO单点登陆
- TextField组件的text属性
- J2EE中cr_ora_tb.sql之类的.sql文件是什么用处?
- 请问hibernate能代替什么?是不是entity bean?
- 关于ejb发布的问题 大虾们请进
- 提交表单问题,
- org.springframework.beans.factory.BeanCreationException: Error creating bean wit
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<script type="text/javascript" src="jquery.js"></script>
<title>一级菜单1</title>
<script>
function selectCheck(){
}
//选中孩子
function selectChild(o){
//获得本菜单的tr
var otr = o.parentElement.parentElement;
//获得子菜单的tr
var checkboxArray = $(otr).next().find("input:checkbox");
//遍历子菜单的checkbox
for(var i=0;i<checkboxArray.length;i++) {
checkboxArray[i].checked = o.checked;
}
}
//选中父类(适用二级)
function selectParent(o){
//t=true默认找到
var t= false;
//获得本菜单的tr
var otr = o.parentElement.parentElement;
//获得父菜单的tr
var otrmenu = otr.previousSibling;
//遍历子菜单的checkbox,验证是有选
for(var i=0;i<otr.all.length;i++) {
if(otr.all[i].type=="checkbox" && otr.all[i].checked){
t = true;
break;
}
}
//设置父类的checkbox状态
if(t){
for(var i=0;i<otrmenu.all.length;i++) {
if(otrmenu.all[i].type=="checkbox"){
otrmenu.all[i].checked = "checked";
selectRoot(otrmenu.all[i]);
break;
}
}
}else{
for(var i=0;i<otrmenu.all.length;i++) {
if(otrmenu.all[i].type=="checkbox"){
otrmenu.all[i].checked = "";
selectRoot(otrmenu.all[i]);
break;
}
}
}
}
//选中根点节(适用一级)
function selectRoot(o){
//t=true默认找到
var t= false;
//获得本菜单的tr
var otr = o.parentElement.parentElement.parentElement.parentElement.parentElement.parentElement //获得父菜单的tr
var otrmenu = otr.previousSibling; //遍历子菜单的checkbox,验证是否全选
for(var i=0;i<otr.all.length;i++) {
if(otr.all[i].type=="checkbox" && otr.all[i].checked){
t = true;
break;
}
}
//设置父类的checkbox状态
if(t){
for(var i=0;i<otrmenu.all.length;i++) {
if(otrmenu.all[i].type=="checkbox"){
otrmenu.all[i].checked = "checked";
break;
}
}
}else{
for(var i=0;i<otrmenu.all.length;i++) {
if(otrmenu.all[i].type=="checkbox"){
otrmenu.all[i].checked = "";
break;
}
}
}
}
//菜单的显示与隐藏
function setDisplay(o){
if(o.style.display==""){
o.style.display="none";
}else{
o.style.display="";
}
}
</script>
</head><body>
<table>
<tr>
<td ><input type="checkbox" name="m1" onclick="selectChild(this);" ><span onclick="setDisplay(m1_menu);" style="cursor: hand">一级菜单1</span></td>
</tr>
<tr id="m1_menu" style="">
<td>
<table>
<tr>
<td> <input type="checkbox" name="m11" onclick="selectChild(this);selectRoot(this);"><span onclick="setDisplay(m11_menu);" style="cursor: hand">二级菜单1</span></td>
</tr>
<tr id="m11_menu">
<td>
<input type="checkbox" name="m11_chk" onclick="selectParent(this);"><a href="#">三级菜单1</a><br>
<input type="checkbox" name="m11_chk" onclick="selectParent(this);"><a href="#">三级菜单2</a><br>
<input type="checkbox" name="m11_chk" onclick="selectParent(this);"><a href="#">三级菜单3</a><br>
</td>
</tr>
<tr>
<td> <input type="checkbox" name="m12" onclick="selectChild(this);selectRoot(this);"><span onclick="setDisplay(m12_menu);" style="cursor: hand">二级菜单2</span></td>
</tr>
<tr id="m12_menu">
<td>
<input type="checkbox" name="m12_chk" onclick="selectParent(this);"><a href="#">三级菜单4</a><br>
<input type="checkbox" name="m12_chk" onclick="selectParent(this);"><a href="#">三级菜单5</a><br>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td><input type="checkbox" name="m2">一级菜单2</td>
</tr>
<tr id="m2_menu">
<td></td>
</tr>
<tr>
<td><input type="checkbox" name="m3">一级菜单3</td>
</tr>
<tr id="m3_menu">
<td></td>
</tr>
</table></body></html>
用jquery可以解决这种问题 我只改了第一个方法,若想用,后面自己改撒。。都差不多//选中孩子
function selectChild(o){
//获得本菜单的tr
var otr = o.parentElement.parentElement;
//获得子菜单的tr
var checkboxArray = $(otr).next().find("input:checkbox");
//遍历子菜单的checkbox
for(var i=0;i<checkboxArray.length;i++) {
checkboxArray[i].checked = o.checked;
}
}