zoukankan      html  css  js  c++  java
  • zTree多条件模糊查询

      function searchFun() {
    var zTrees=$.fn.zTree.getZTreeObj("ztree");//获得所有几点
    var hiddenNodes=[];//显示的数组
    var code2=$("#code2").val();
    var code2Arr=new Array();//code搜索数组
    var proArr=new Array();//name搜索数组
    var productNames=$("#productName").val();
    var nodeArr=new Array();//根据条件所搜出的全部节点数组
    var typeArr=[];//满足其余条件的数组
    var typeArr22=[];//满足其余条件的数组
    if(code2!=null && code2!=''){
    var code2A=code2.split(",");
    for(var i=0;i<code2A.length;i++){
    if(code2A[i]!='' || code2A[i]!=null){
    code2Arr.push(code2A[i]);
    }
    }
    }
    if(productNames!=null && productNames!=''){
    var proA=productNames.split(",");
    for(var i=0;i<proA.length;i++){
    if(proA[i]!='' || proA[i]!=null){
    proArr.push(proA[i]);
    }
    }
    }

    var allNode = zTrees.transformToArray(zTrees.getNodes());
    zTrees.hideNodes(allNode);//隐藏所有节点

    if(code2Arr.length > 0 && proArr.length>0){
    top.layer.msg("找不到这些商品组成的套餐");
    return;
    }

    if(code2Arr.length > 0){
    nodeArr = zTrees.getNodesByParamFuzzy("name", code2Arr[0], null);//搜索含有value关键字的节点
    nodeArr = zTrees.transformToArray(nodeArr);//转化为数组
    }else {
    nodeArr = zTrees.getNodesByParamFuzzy("name", proArr[0], null);//搜索含有value关键字的节点
    nodeArr = zTrees.transformToArray(nodeArr);//转化为数组
    }

    var currArr=new Set();//保存根据节点,相同的就覆盖
    for(var n in nodeArr){//遍历
    findParent(nodeArr[n],currArr);//找到其父节点
    }
    currArr.forEach(function (item) {//遍历根结点,并获得其所有叶子节点,包括自己
    var arr=new Array();
    arr.push(item);
    getChildrenNode(item,arr);
    typeArr.push(arr);
    });
    var namess=[];//每个根结点的所有节点名称的数组
    if(typeArr.length>0){
    for(var i=0;i<typeArr.length;i++){
    var names="";
    for(var n in typeArr[i]) {
    names+=typeArr[i][n].name;
    }
    namess.push(names);
    }
    for(var m in namess){
    if(proArr.length>0 && code2Arr.length==0){
    var n=0;
    for(var i in proArr){
    if(namess[m].indexOf(proArr[i])>-1){
    n++;
    }
    }
    if(n==proArr.length){
    typeArr22.push(typeArr[m]);
    }
    }else {
    var n=0;
    for(var i in code2Arr){
    if(namess[m].indexOf(code2Arr[i])>-1){
    n++;
    }
    }
    if(n==code2Arr.length){
    typeArr22.push(typeArr[m]);
    }
    }
    }
    }
    if(typeArr22.length>0){
    for(var i in typeArr22){
    for(var j in typeArr22[i]){
    hiddenNodes.push(typeArr22[i][j])
    }
    }
    }
    zTrees.showNodes(hiddenNodes);//显示满足的所有节点
    /*highlightAndExpand_ztree(hiddenNodes);*/
    if (code2 == "" && productNames=='') {
    zTrees.expandAll(false);
    }
    }
    /*
    获取当前节点的根节点
    */
    function findParent(node,currArr){
    var pNode = node.getParentNode();//获取父节点
    if(pNode != null){
    findParent(pNode,currArr);//递归查询上上一级父节点
    }else {
    if(node.lvl==1){//根结点
    currArr.add(node);
    }
    }
    }

    /*
    获取当前节点下所有的叶子节点
    */
    function getChildrenNode(node,currArr) {
    var children=node.children;
    if(children){
    for(var i in children){
    currArr.push(children[i]);
    if(children[i].lvl!=4){//节点等级为4的就停止执行
    getChildrenNode(children[i],currArr);
    }
    }
    }
    }
  • 相关阅读:
    手机端网页web开发要点
    js javascript:void(0) 真正含义
    牛客第二场 C.message(计算几何+二分)
    计算几何_三维凸包
    【kuangbin专题】计算几何_半平面交
    【kuangbin专题】计算几何_凸包
    【kuangbin专题】计算几何基础
    Codeforces 1058 D. Vasya and Triangle(分解因子)
    网络流模板
    2018 Multi-University Training Contest 6
  • 原文地址:https://www.cnblogs.com/yangqianlong/p/8136252.html
Copyright © 2011-2022 走看看