能否用javascript 递归算法实现这个功能?

宏尘 2017-06-12 07:03:06
下面的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);
//}

}
}
}
请指教,谢谢
...全文
186 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
2017-06-12
  • 打赏
  • 举报
回复
加个参数,每下一级增加一个空格

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 + " ");
			}
		}
	}
}

87,989

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧