欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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不进行重新获取,因此改用了方法。
方法二在朋友的电脑上使用是可以的,但在我的电脑却发生了错误。