我要用JS实现,对树的一些操作!
就是当你点击(check=true)某个节点的时候,获取该节点,判断该节点的同级别的节点是否也被check=true,如果是那么报错!
同样,你点击(check=true)某个节点的时候,获取该节点,同时获取该节点的父节点,同时判断跟该节点的父节点同级别的节点是否也被check=true(或跟该节点的父节点同级别的节点下的子节点是否存在check=true的节点,如果存在,那么报错!)如果是那么报错!
谢谢!~
环境: VB .NET
就是当你点击(check=true)某个节点的时候,获取该节点,判断该节点的同级别的节点是否也被check=true,如果是那么报错!
同样,你点击(check=true)某个节点的时候,获取该节点,同时获取该节点的父节点,同时判断跟该节点的父节点同级别的节点是否也被check=true(或跟该节点的父节点同级别的节点下的子节点是否存在check=true的节点,如果存在,那么报错!)如果是那么报错!
谢谢!~
环境: VB .NET
www.csdn.net和cnblogs有很多的!!
不妨搜搜!!
但是都不满足要求,能不能看看,下面的js有啥问题:(var currNodeChilds = currNode.childNodes;有点问题,但我不知道如何改!)
function tree_oncheck(TreeView1)
{
//得到当前所 Click 的对象
var objNode;
if(!public_IsObjectNull(event.srcElement))
{
//IE
objNode = event.srcElement;
}
else
{
//FF
objNode = event.target;
} //判断是否 Click 的 CheckBox
if(!public_IsCheckBox(objNode))
return; var objCheckBox = objNode;
//根据CheckBox状态进行相应处理
if(objCheckBox.checked==true)
{
//递归选中父节点的 CheckBox
setParentChecked(objCheckBox);
}
}//判断对象是否为空
function public_IsObjectNull(element)
{
if(element==null || element == "undefined")
return true;
else
return false;
}//判断对象是否为 CheckBox
function public_IsCheckBox(element)
{
if(public_IsObjectNull(element))
return false;
if(element.tagName!="INPUT" || element.type!="checkbox")
return false;
else
return true;
}
//得到父节点的 CheckBox
function public_Node2CheckBox(element)
{
var objID = element.getAttribute("ID");
objID = objID.substring(0,objID.indexOf("Nodes"));
return document.getElementById(objID+"CheckBox");
}
//得到本节点所在的 Node(Div 对象)
function public_GetParentNode(element)
{
var parent = element.parentNode;
var upperTagName = "DIV";
//如果这个元素还不是想要的 tag 就继续上溯
while (parent && (parent.tagName.toUpperCase() != upperTagName))
{
parent = parent.parentNode ? parent.parentNode : parent.parentElement;
}
return parent;
}
//设置节点的父节点 Checked
function setParentChecked(currCheckBox)
{
var objParentNode= public_GetParentNode(currCheckBox);
var Last = objParentNode;
if(public_IsObjectNull(objParentNode))
return;
var objParentCheckBox = public_Node2CheckBox(objParentNode); if(!public_IsCheckBox(objParentCheckBox))
{
var bFlag = IsMyChildCheckBoxsUnChecked(Last);
if(bFlag == false)
alert("1111");
return;
}
//objParentCheckBox.checked = true;
setParentChecked(objParentCheckBox);
} //判断该节点的子节点是否都为 UnChecked
function IsMyChildCheckBoxsUnChecked(currObj)
{
var retVal = false;
var bFlag = false;
var bNextFlag = false;
var iCount = 0;
var currNode;
currNode = currObj;
var currNodeChilds = currNode.childNodes;
var count = currNodeChilds.length;
alert("count" + count);
for(var i=0;i<count;i++)
{
var childCheckBox = currNodeChilds[i];
alert(childCheckBox.value);
alert("childCheckBox" + childCheckBox.checked);
alert("public_IsCheckBox" + public_IsCheckBox(childCheckBox));
if(public_IsCheckBox(childCheckBox) && childCheckBox.checked == true)
{
if(retVal == false)
{
retVal = true;
iCount = i;
continue;
}
else
{
return false;
}
}
else
{
bFlag = IsKaisyaChecke(childCheckBox);
alert("bFlag" + bFlag);
if(iCount != i && bFlag == true)
{
return false;
}
if(bFlag == true && bNextFlag == true)
{
return false;
}
if(bNextFlag == false && bFlag == true)
{
bNextFlag = bFlag;
iCount = i;
}
}
}
return true;
}
//判断该节点的子节点是否都为 UnChecked
function IsKaisyaChecke(currObj)
{
var retVal = false;
var currNode;
currNode = currObj;
var currNodeChilds = currNode.childNodes;
var count = currNodeChilds.length;
for(var i=0;i<count;i++)
{
var childCheckBox = currNodeChilds[i];
if(retVal == false)
{
if(public_IsCheckBox(childCheckBox) && childCheckBox.checked == true)
{
retVal = true;
return retVal;
}
else
retVal = IsMyChildCheckBoxsUnChecked(childCheckBox);
}
}
return retVal;
}