代码如下:
function recursionNode(html, node) {
if (node.length > 0) {
var len = node.length;
for(var i = 0; i < len; i++) {
var cnode = node[i];
if (cnode.children != null) {
recursionNode(html,cnode.children);
} else {
var jsonData = $.toJSON(cnode.data);
var obj = $.parseJSON(jsonData);
if (obj.type == 'Department') {
html += "<div>"+obj.name+"</div>";
}
}
}
}
}
在js中递归调用时,每次递归时html都被初始化成html = "";但在java中我一直是这么写的,html变量的值会叠加,为什么js中就不行?
var html="";
function recursionNode( node) {
if (node.length > 0) {
var len = node.length;
for(var i = 0; i < len; i++) {
var cnode = node[i];
if (cnode.children != null) {
recursionNode(cnode.children);
} else {
var jsonData = $.toJSON(cnode.data);
var obj = $.parseJSON(jsonData);
if (obj.type == 'Department') {
html += "
你有一个作为全局变量的html么?换一个变量名看看
recursionNode(html,cnode.children);
->
return recursionNode(html,cnode.children);
或者下面加上return html;
没仔细看你的逻辑
function recursionNode(node) {
var html="";
if (node.length > 0) {
var len = node.length;
for(var i = 0; i < len; i++) {
var cnode = node[i];
if (cnode.children != null) {
recursionNode(html,cnode.children);
} else {
var jsonData = $.toJSON(cnode.data);
var obj = $.parseJSON(jsonData);
if (obj.type == 'Department') {
html += "
//递归使用时,可以这样
html+=recursionNode(node);