为了账号安全,请及时绑定邮箱和手机立即绑定

跪求!js递归删除所有子元素

跪求!js递归删除所有子元素

泛舟湖上清波郎朗 2019-07-27 09:41:42
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
                            
查看完整回答
反对 回复 2019-07-27
?
阿晨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的区别,上面是我冷静下自己改的,有时间脑子想糊涂了什么思路都没
                            
查看完整回答
反对 回复 2019-07-27
  • 2 回答
  • 0 关注
  • 666 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信