<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<style type="text/css">
ul { list-style:none; }
</style>
<script type="text/javascript">
window.onload = function() {
var obj = document.getElementById('demo').getElementsByTagName('input');
for (var i = 0; i < obj.length; i ++) {
obj[i].onclick = function() {
//查找并选择/取消选择所有子项
var childrenObj = this.parentNode.getElementsByTagName('ul');
if (childrenObj.length > 0) {
for (var j = 0; j < childrenObj.length; j ++) {
var o = childrenObj[j].getElementsByTagName('input');
for (var k = 0; k < o.length; k ++) o[k].checked = this.checked;
}
} //递归方法检查并设置父选项选择状态
checkParent(this);
}
}
} function checkParent(obj) {
var parentObj = obj.parentNode.parentNode;
if (parentObj.id != 'demo') {
parentObj = parentObj.parentNode;
var FLAG = true; //标志位,true表示父级选项的所有子选项都是选中的,初始值为true,假设全部为选中
var o = parentObj.getElementsByTagName('input');
for (var i = 1; i < o.length; i ++) {
if (!o[i].checked) {
FLAG = false;
break;
}
}
if (FLAG) o[0].checked = true;
else o[0].checked = false;
if (parentObj.parentNode.parentNode.id != 'demo') checkParent(o[0]);
}
}
</script>
</head> <body>
<form id="weaver" name="frmmain" method="post">
<ul id="demo">
<li><input type="checkbox" />系统使用
<ul>
<li><input type="checkbox" />系统使用规范</li>
<li><input type="checkbox" />系统功能介绍
<ul>
<li><input type="checkbox" />三级选项1
<ul>
<li><input type="checkbox" />四级选项1</li>
</ul>
</li>
<li><input type="checkbox" />三级选项2</li>
</ul>
</li>
</ul>
</li>
<li><input type="checkbox" />会议资料
<ul>
<li><input type="checkbox" />会议资料</li>
</ul>
</li>
</ul>
</form>
</body>
</html>

最新文章

  1. Objective-C中block的底层原理
  2. lwfs指定特定目录输出
  3. DEEP LEARNING WITH STRUCTURE
  4. struts一些实用常量配置_2015.01.04
  5. Android的图片压缩并上传
  6. C++成员变量、构造函数的初始化顺序
  7. ArcGIS Server 10.2 实战(一)Asp.net MVC与JSON数据妙用实现动态生成要素图层
  8. Number of 1 Bits——LeetCode
  9. Transparency Tutorial with C# - Part 1
  10. ASP.NET网站怎么发布 Web项目程序怎么发布部署(暂时收藏)
  11. java冒泡排序详解
  12. 使用std::vector优化点云动画显示一例
  13. HTML轮播图实现(前后端分离)
  14. 如何将SVN仓库转换为Git仓库
  15. Linux sed 命令字符串替换使用方法详解
  16. vue实现未登录跳转到登录页面
  17. 【webstorm】project目录树显示不出
  18. 浅析HttpCient
  19. 利用github pages五分钟建好个人网站+个人博客
  20. 反射报错java.lang.IllegalArgumentException: wrong number of arguments

热门文章

  1. 在Hive中使用Avro
  2. Qt WebKit 学习的说明
  3. 记录个人数组、字符串自己常忘记的方法,以及ES常用处理方式
  4. (五)js数组方法二
  5. POJ1797 Heavy Transportation
  6. 关于this指向问题的总结【转自秘密花园】
  7. 21天学通C++_Day1
  8. python的一些开源库
  9. java RE(正则表达式)
  10. 【转】IUSR和IIS_IUSRS