复选框父级和子级的联动

来源:互联网 发布:法语官方国家知乎 编辑:程序博客网 时间:2024/05/21 17:00

具体功能就是实现当子级被选中时相应的父级也被选中、当父级以下的所有子级被取消时实现父级也被取消、利用JS实现、是经过网上看到的代码进行部分修改而成、


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ";> 
<html xmlns=";>
 <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 = false; // true表示父级选项的所有子选项存在选中的,初始值为false,假设全部未选中 
var o = parentObj.getElementsByTagName('input'); 
  for (var i = 1; i < o.length; i ++) 
 { if (o[i].checked) { FLAG = true; 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="get"> 
    <ul id="demo"> 
     <li><input type="checkbox" />A1
      <ul>
       <li><input type="checkbox" />A1__B1</li> 
       <li><input type="checkbox" />A1__B2 
        <ul> 
         <li><input type="checkbox" />A1__B2__C1 
        <ul>
         <li><input type="checkbox" />A1__B2__C1__D1</li>
         <li><input type="checkbox" />A1__B2__C1__D2</li> 
        </ul> 
       </li>
       <li><input type="checkbox" />A1__B2__C2</li>
      </ul>
     </li> 
    </ul>
       </li>
     <li><input type="checkbox" />A2 
     <ul> 
     <li><input type="checkbox" />B</li>
     </ul> 
     </li> 
     </ul> 
    </form> 
   </body> 
</html>

具体效果动手试一下、突然发现我不会添加图片、0_o


0 0
原创粉丝点击