递归调用的时候出现的一个很奇怪的问题。

luoluonozuoluo 2006-08-22 03:28:42
function getSub(_index){
if(target_folder_list[_index].length > 0){
for(k = 0; k < target_folder_list[_index].length; k++){
dd = target_folder_list[_index][k].split("@@@");
if(mySub == ''){
mySub = '<TR id="' + dd[0] + '" tr_title="' + dd[1] + '" onClick="tr_select(id)" style="cursor:hand;cursor:pointer!important"><TD>' + dd[2] + '</TD></TR>';
}else{
mySub += '<TR id="' + dd[0] + '" tr_title="' + dd[1] + '" onClick="tr_select(id)" style="cursor:hand;cursor:pointer!important"><TD>' + dd[2] + '</TD></TR>';
}
getSub(dd[0]);
}
}

return mySub;
}

  这段是递归搜索子目录的代码。用php是可以得到正确结果的,用JS递归调用的时候它不返回上一个调用点?难道要自己做个虚拟堆栽?
...全文
196 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuyiheng 2006-08-22
  • 打赏
  • 举报
回复
k=0 var k = 0 ............
没注意到
luoluonozuoluo 2006-08-22
  • 打赏
  • 举报
回复
哈哈,我好想哭哦,搞了差不多两天原来是因为那个局部变量的问题。
for(k = 0; k < target_folder_list[_index].length; k++){
dd = target_folder_list[_index][k].split("@@@");
getSub(dd[0]);
}

改成

for(var k = 0; k < target_folder_list[_index].length; k++){
dd = target_folder_list[_index][k].split("@@@");
getSub(dd[0]);
}

这样子就可以正确执行啦,谢谢大家的关注现在结帖。
shenjf2000 2006-08-22
  • 打赏
  • 举报
回复
程序本身应该没有问题,是可以递归调用的,可能是你给的数据格式问题,应该很容易调试到,在if后面加个else,alert看看:
if(target_folder_list[_index].length > 0)
{}
else
{
alert("index="+_index+"|tl="+target_folder_list[_index]);
}
luoluonozuoluo 2006-08-22
  • 打赏
  • 举报
回复
function getSub(_index){
if(target_folder_list[_index].length > 0){
for(k = 0; k < target_folder_list[_index].length; k++){
dd = target_folder_list[_index][k].split("@@@");
getSub(dd[0]);
}
}

return mySub;
}

我现在把中间的那段判断去掉啦。前面没有注意,请继续关注
luoluonozuoluo 2006-08-22
  • 打赏
  • 举报
回复
TO:xuyiheng(许一恒) ( ) 信誉:100
是的。现在只是最简单的目录结构、现在我想要模拟操作系统里面的目录树
luoluonozuoluo 2006-08-22
  • 打赏
  • 举报
回复
目录树结构
195

304 436

501 500

现在问题是程序访问195目录的子目录304->501没有继续访问子目录436->500
xuyiheng 2006-08-22
  • 打赏
  • 举报
回复
太晕了,还是2维的数组.好累,没看明白,getSub()是在循环里面么?
luoluonozuoluo 2006-08-22
  • 打赏
  • 举报
回复
target_folder_list格式如下:

'501@@@/我的文档/文本/新建文件夹/@@@    新建文件夹';
目录编号@@@路径@@@显示时的名称
luoluonozuoluo 2006-08-22
  • 打赏
  • 举报
回复
+=那里还有其它作用。现在只是把它做成最简化
xuyiheng 2006-08-22
  • 打赏
  • 举报
回复
target_folder_list 这个是什么格式?
xuyiheng 2006-08-22
  • 打赏
  • 举报
回复
没看出判断有什么用 = '' 就 = 不然就 += ,直接+=不就完了

得到什么结果,起的变量名实在太隐晦了

87,910

社区成员

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

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