我有一个tree,用javascript写的 
这个tree是checkbox形式,可以点击选中或取消选中,点击一个节点选中后,其所有子节点都选中,反之都不选中,如果有一个子节点选中的话,则父节点选中,如果所有的子节点都没有选中的话,则父亲节点也会不选中,用递归完成的. //oncheck事件
function tree_oncheck(tree)
{
 var node=tree.getTreeNode(tree.clickedNodeIndex);
 var Pchecked=tree.getTreeNode(tree.clickedNodeIndex).getAttribute("checked");
 //var str='';
 setcheck(node,Pchecked);
 SetParentFalse(node,Pchecked);
 SetParentTrue(node,Pchecked);
 document.all.TextBox1.value="";
 //document.all.unchecked1.value=",";
 FindCheckedFromNode(tree);
 SetCookie('checknode',document.all.TextBox1.value);
 //var str = parent.parent.mainFrame.document.URL;
 //document.all.TextBox1.value += str;
}//设置子节点选中
function setcheck(node,Pc)
{
var i;
var ChildNode=new Array();
ChildNode=node.getChildren();
 
if(parseInt(ChildNode.length)==0)
{
return;
}
else
{
for(i=0;i<ChildNode.length;i++)
{
var cNode;
cNode=ChildNode[i];
if(parseInt(cNode.getChildren().length)!=0)
{
setcheck(cNode,Pc);
}
cNode.setAttribute("Checked",Pc);
}
}
}
//取消选取所有子节点父节点也取消选取
function SetParentFalse(node,Pchecked)
{
var cNode;
var ChildNode=new Array();
if(Pchecked==false)
{
if(node.getParent())
{
cNode=node.getParent(); ChildNode=cNode.getChildren();
for(i=0;i<ChildNode.length;i++)
{
var ccNode;
ccNode=ChildNode[i];
if(ccNode.getAttribute("Checked")==true)
{
return;
}
}
cNode.setAttribute("Checked",Pchecked);
SetParentFalse(cNode,Pchecked);
}
}
else
{
return;
}
}
//选取一个子节点父节点也被选取
function SetParentTrue(node,Pchecked)
{
var cNode;
var ChildNode=new Array();
if(Pchecked==true)
{
if(node.getParent())
{
cNode=node.getParent();
cNode.setAttribute("Checked",Pchecked);
SetParentTrue(cNode,Pchecked);
}
}
else
{
return;
}
}