javascript:checkbox树的结点循环选择方法***梦想园***
一个树,用checkbox来选择,当选择子栏目时同时选择全部的父栏目(包括父栏目的父栏目),但选择父栏目时同时选择所有的子栏目(包括子栏目的子栏目)。
在每个结点生成的时候都添加一属性PARENTID ,记录父结点的ID。
var doing=null;
function SetCheck()
{
if(doing!=null)return;
var ctl=event.srcElement;
doing=ctl;
var id=ctl.value;
var parents=","+id+",";
var ctls=Form2.elements;
//改变子项的状态
for(i=0;i {
if(ctls[i]!=ctl)
{
if (ctls[i].PARENTID == null)
{
continue;
}
if(parents.indexOf(","+ctls[i].PARENTID+",")>=0)
{
parents+=ctls[i].value+",";
ctls[i].checked=event.srcElement.checked;
}
}
}
//当选中时,父项也应被选中
if(ctl.PARENTID != null && ctl.checked)
{
var parentid=ctl.PARENTID;
while(parentid!="")
{
for(j=0;j {
if (ctls[j].PARENTID == null)
{
continue;
}
if(ctls[j].value != null && ctls[j].value==parentid)
{
if(!ctls[j].checked)ctls[j].checked=true;
parentid=ctls[j].PARENTID;
break;
}
}
}
}
doing=null;
}
**************************************
梦想园 c# javaSCRIPT 软件工程师 网络营销 电子商务 互联网 博客日志 分享交流
**************************************