ztree之获取当前节点的所有子节点
程序员文章站
2022-06-08 09:07:17
...
在使用zTree插件实现树形图中,如果需要获取当前点击的父节点的子节点数的需求,可以使用treeNode.children获取子节点数据集合,使用length方法获取集合长度。
将当前节点的treeNode传入即可调用。
在我这有两种方式:
//ztree节点树点击事件
function zTreeOnClick(event, treeId, treeNode) {
var strID = "";//定义变量接收节点
//接收返回的节点
strID = getzTreeChildrenNode(treeNode, strID);
//节点拼接
strID = strID + "," + treeNode.id;
//console.log(str);
//去除拼接节点的第一个“,”号
var NodesID = strID.substring(1, strID.length);
console.log(NodesID)
//将拼接号的节点赋值用于查询
$("#CustomerTypeID").val(NodesID);
Classification();//路径导航
}
//递归查询当前节点下面的全部子节点(一)
function getzTreeChildrenNode(treeNode, result)
{
//检测是否为父节点
if (treeNode.isParent) {
var childrenNodes = treeNode.children;//查询子节点
if (childrenNodes) {
//子节点拼接
for (var i = 0 ; i<childrenNodes.length ; i++){
result += ',' + childrenNodes[i].id;
result = getzTreeChildrenNode(childrenNodes[i], result);//循环调用
}
}
}
return result;//返回
}
//递归查询当前节点下面的全部子节点(二)
var nodeId = "";//记录节点
function findAllNodes(nodeObj) {
var nodeArr = nodeObj.children; //没有子节点==undefined
if (nodeId == "") {
nodeId = nodeObj.id;
}
if (nodeArr != undefined) {
for (var i = 0; i < nodeArr.length; i++) {
nodeId += "," + nodeArr[i].id;
if (nodeArr[i].children != undefined) {
findAllNodes(nodeArr[i]);//循环调用
}
}
}
//console.log(nodeId);
return nodeId;
}
我起初使用的是方法二,但是方法二在我的电脑上使用时发生了错误,只有第一次,获取的是正确外,下一次获取的ID就会重复出现或者ID不进行重新获取,因此改用了方法。
方法二在朋友的电脑上使用是可以的,但在我的电脑却发生了错误。
上一篇: 揭秘:赵匡胤为何能与李世民并称唐宗宋祖?
下一篇: MIT-6.828 Lab1实验报告