论坛首页 Web前端技术论坛

CheckBox级联选择

浏览 22140 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (8) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-07-25   最后修改:2009-07-25
<div >
	<div >
		<div  id ="one"><input name = "" value ="oneChild" type="checkbox"  onclick = "checkChild(this,'oneChild')">one</div>
		<div id = 'oneChild'>
			
			<ul>
				<li><div><input name = "" type="checkbox"  onclick = "checkParent(this,'one')">one1
				   </div></li>
				<li><input name = "" type="checkbox"  onclick = "checkParent(this,'one')">one2</li>
				<li><input name = "" type="checkbox"  onclick = "checkParent(this,'one')">one3</li>
				<li><input name = "" type="checkbox"  onclick = "checkParent(this,'one')">one4</li>
			</ul>
		</div>
	</div >
	<div >
		<div  id ="two" ><input name = "" value ="twoChild" type="checkbox" onclick = "checkChild(this,'twoChild')">two</div>
		<div id ="twoChild">
			<ul>
				<li><input name = "" type="checkbox"  onclick = "checkParent(this,'two')">two1</li>
				<li><input name = "" type="checkbox"  onclick = "checkParent(this,'two')">two2</li>
				<li><input name = "" type="checkbox"  onclick = "checkParent(this,'two')">two3</li>
				<li><input name = "" type="checkbox"  onclick = "checkParent(this,'two')">two4</li>
			</ul>
		</div>
	</div >
	<div >
		<div id ="three"><input name = "" value ="threeChild" type="checkbox"  onclick = "checkChild(this,'threeChild')" >three</div>
		<div id="threeChild">
			<ul>
				<li><input name = "" type="checkbox"  onclick = "checkParent(this,'three')">three1</li>
				<li><input name = "" type="checkbox"  onclick = "checkParent(this,'three')">three2</li>
				<li><input name = "" type="checkbox"  onclick = "checkParent(this,'three')">three3</li>
				<li><input name = "" type="checkbox"  onclick = "checkParent(this,'three')">three4</li>
			</ul>
		</div>
	</div >
</div>

<script language="javascript">
	function checkChild(obj,childId){
		var childs    = document.getElementById(childId);
		var subChecks = childs.getElementsByTagName("input");
		if(obj.checked){
			for(var i = 0 ;i< subChecks.length;i++){
				subChecks[i].checked=true;
			}
		}else{
			for(var i = 0 ;i< subChecks.length;i++){
				subChecks[i].checked = false;
			}
		}
	}
	function checkParent(obj,parentId){
		var parent = document.getElementById(parentId);
		if(obj.checked){
			parent.getElementsByTagName("input")[0].checked = true;
		}else{
			var flag   = false;
			var childs = parent.nextSibling;
			var subChecks = childs.getElementsByTagName("input");
			for(var i =0 ;i<subChecks.length;i++){
				var temp = subChecks[i];
				if(temp.checked==true){
					flag = true;
				}
			}
			if(flag){
				parent.getElementsByTagName("input")[0].checked = true;
			}else{
				parent.getElementsByTagName("input")[0].checked = false;
			}
		}
	}
</script>
给你写个简单点儿的!参考一下,呵呵!!

 

 

0 请登录后投票
   发表时间:2009-07-28  
写个JQUERY插件吧.实现起来不会这么苯重.
0 请登录后投票
   发表时间:2009-07-28  
windywany 写道
写个JQUERY插件吧.实现起来不会这么苯重.

 

现在天天使用JQuery,都快忘了Dom的操作了

 

所以就自己写了一个。

 

0 请登录后投票
   发表时间:2009-07-30  
这个js通用吗?
0 请登录后投票
   发表时间:2009-08-06  
一个checkbox应该要有3种状态:全选、半选、未选。通常安装程序里头的选择就是这个样子的啊。

要有半选功能,就不是<input type=checkbox>能搞定的了,必须要模拟。

另外呢,如果有disabled了,那么它的状态应该要不被其它checkbox的点击所改变。
0 请登录后投票
   发表时间:2010-06-23  
这帖子不错
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics