下面的addSubNodes1,addSubNodes2,addSubNodes3,addSubNodes4能否用递归实现,他们唯一的区别的在于这一条语句,中间option 值的空格个数不一样: deptOptionsString = "<option value=''>" + noderoot.text + "</option>";    //组织架构目录数据
    var deptOptionsString = "";
//创建组织架构
//rootNode根节点数据
    function GetOrganizeTree(rootNode) {
        //机构根节点数据
        deptOptionsString = "<option value=''>" + noderoot.text + "</option>"; //根节点option
        addSubNodes1(rootNodes);//1级子节点,在option的text中加一个空格(缩进)显示下一级节点数据
        $("#deptID").append(deptOptionsString);
    }  
    //组织架构一级子节点数据
    function addSubNodes1(pNodes) {
        var n = pNodes;
        if (n.length > 0) {
            for (i = 0; i < n.length; i++) {
                deptOptionsString += "<option value='" + n[i].id + "'> |-" + n[i].text + "</option>"
                if (n[i].ChildNodes.length > 0) {
                    addSubNodes2(n[i].ChildNodes);
                }
            }
        }
    }
    
    //组织架构二级子节点数据
    function addSubNodes2(pNodes) {        var n = pNodes;
        var i = 0;        if (n.length > 0) {
            for (; i < n.length; i++) {
                deptOptionsString += "<option value='" + n[i].id + "'>  |-" + n[i].text + "</option>";
                if (n[i].ChildNodes.length > 0) {
                    addSubNodes3(n[i].ChildNodes);
                }            }
        }    }//组织架构三级子节点数据
    function addSubNodes3(pNodes) {        var n = pNodes;
        var i = 0;        if (n.length > 0) {
            for (; i < n.length; i++) {
                deptOptionsString += "<option value='" + n[i].id + "'>   |-" + n[i].text + "</option>";
                if (n[i].ChildNodes.length > 0) {
                    addSubNodes4(n[i].ChildNodes);
                }            }
        }
    }
  //组织架构四级子节点数据
    function addSubNodes4(pNodes) {        var n = pNodes;
        var i = 0;
       if (n.length > 0) {
            for (; i < n.length; i++) {                deptOptionsString += "<option value='" + n[i].id + "'>    |-" + n[i].text + "</option>";;
                //if (n[i].ChildNodes.length > 0) {
                //    addSubNodes5(n[i].ChildNodes);
                //}            }
        }
    }
请指教,谢谢

解决方案 »

  1.   

    加个参数,每下一级增加一个空格function GetOrganizeTree(rootNode) {
    //机构根节点数据
    deptOptionsString = "<option value=''>" + noderoot.text + "</option>"; //根节点option
    addSubNodes1(rootNodes, "");//1级子节点,在option的text中加一个空格(缩进)显示下一级节点数据
    $("#deptID").append(deptOptionsString);
    }function addSubNodes(pNodes, pad) {
    var n = pNodes;
    if (n.length > 0) {
    for (i = 0; i < n.length; i++) {
    deptOptionsString += "<option value='" + n[i].id + "'>" + pad + "|-" + n[i].text + "</option>"
    if (n[i].ChildNodes.length > 0) {
    addSubNodes(n[i].ChildNodes, pad + " ");
    }
    }
    }
    }