账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    js递归删除所有子元素
    40
    0

    js递归删除所有子元素

    碰到递归的问题没有写终止递归条件的思路,大家可以说下大概处理思路吗?谢谢!

    相关代码

    <button class="btn btn-sm btn-success" data-pid="0" data-id="1">1</button>
    <button class="btn btn-sm btn-success" data-pid="1" data-id="4">11</button>
    <button class="btn btn-sm btn-success" data-pid="4" data-id="7">111</button>
    <button class="btn btn-sm btn-success" data-pid="1" data-id="5">12</button>
    <button class="btn btn-sm btn-success" data-pid="1" data-id="6">13</button>
    <button class="btn btn-sm btn-success" data-pid="0" data-id="2">2</button>
    <button class="btn btn-sm btn-success" data-pid="0" data-id="3">3</button>
    <script>
        function remove_child(elem,id,pid=0){
            console.log($(elem+"[data-id='"+id+"']").text()+'开始:');
            if(pid>0){
                console.log($(elem+"[data-id='"+id+"']").text()+' remove id='+id);
                $(elem+"[data-id='"+id+"']").remove();
            }
            if($(elem+"[data-pid='"+id+"']").length>0){
                var child_elem = $(elem+"[data-pid='"+id+"']");
                for (i = 0; i < child_elem.length; i++){
                    console.log(child_elem.eq(i).text()+'循环:'+i);
                    remove_child(elem,child_elem.eq(i).attr("data-id"),child_elem.eq(i).attr("data-pid"));
                }
            }else{
                if(pid>0){
                    console.log($(elem+"[data-id='"+id+"']").text()+' remove-id='+id);
                    $(elem+"[data-id='"+id+"']").remove();
                }
                return ;
            }
        }
        remove_child('button',1);
    </script>

    输出

    1开始:
    11循环:0
    11开始:
    11 remove id=4
    111循环:0
    111开始:
    111 remove id=7
    remove-id=7
    13循环:2
    13开始:
    13 remove id=6
    remove-id=6

    终止递归i=2了,导致跳过12了,代码如何调整?

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 0
    • 在JavaScript中,你可以使用递归来删除所有子元素。以下是一个例子:

      javascript function removeSubElements(arr, index = 0) { if (index >= arr.length) { return arr; } arr.splice(index, 1); removeSubElements(arr, index + 1); return arr; }

      在这个函数中,我们首先检查index是否大于等于数组的长度。如果是,我们就返回数组本身。否则,我们使用splice方法从数组中删除当前元素,并递归地调用removeSubElements函数,将索引向后移动一位。这样,每次递归调用都会删除一个元素,直到index等于数组的长度。

      你可以像这样使用这个函数:

      javascript const arr = [1, 2, 3, 4, 5]; const result = removeSubElements(arr); console.log(result); // 输出:[1, 2, 3, 4, 5]

      在这个例子中,我们传递了一个数组和一个初始的索引0removeSubElements函数将删除所有在索引0index之间的元素。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部