js递归删除所有子元素碰到递归的问题没有写终止递归条件的思路,大家可以说下大概处理思路吗?谢谢!相关代码111111121323functionremove_child(elem,id,pid=0){console.log($(elem+"[data-id='"+id+"']").text()+'开始:');if(pid>0){console.log($(elem+"[data-id='"+id+"']").text()+'removeid='+id);$(elem+"[data-id='"+id+"']").remove();}if($(elem+"[data-pid='"+id+"']").length>0){varchild_elem=$(elem+"[data-pid='"+id+"']");for(i=0;i0){console.log($(elem+"[data-id='"+id+"']").text()+'remove-id='+id);$(elem+"[data-id='"+id+"']").remove();}return;}}remove_child('button',1);输出1开始:11循环:011开始:11removeid=4111循环:0111开始:111removeid=7remove-id=713循环:213开始:13removeid=6remove-id=6终止递归i=2了,导致跳过12了,代码如何调整?
2 回答
波斯汪
TA贡献1811条经验 获得超4个赞
你用的是jQuery吧....for(i=0;i你这个i没有声明过,于是是一个全局的i,也就是说所有的递归调用的remove_child共享同一个i。递归调用修改的i的值,于是循环就调过元素了。 改成for(leti=0;i
阿晨1998
TA贡献2037条经验 获得超6个赞
functionremove_child(elem,id){if($(elem+"[data-pid='"+id+"']").length>0){varchild_elem=$(elem+"[data-pid='"+id+"']");for(leti=0;iremove_child(elem,child_elem.eq(i).attr("data-id")); }child_elem.remove();}else{if($(elem+"[data-id='"+id+"']").attr('data-pid')>0){$(elem+"[data-id='"+id+"']").remove();}}}受教了,查看下var和let的区别,上面是我冷静下自己改的,有时间脑子想糊涂了什么思路都没
添加回答
举报
0/150
提交
取消