相关文章推荐
英姿勃勃的闹钟  ·  Js如何删除所有子元素以及当前元素开发者社区·  4 天前    · 
小胡子的台灯  ·  金刚萨埵忏悔法:索达吉堪布-佛教导航·  1 年前    · 
精明的花卷  ·  ​Python-时间及日期-07-获取本周或 ...·  1 年前    · 
豪爽的香烟  ·  ASPX文件转HTML - 开心技术 - 博客园·  1 年前    · 
霸气的煎饼  ·  C#文件操作 - 知乎·  1 年前    · 
魁梧的八宝粥  ·  【官方網店】LOCKLY Secure ...·  1 年前    · 
Code  ›  Js如何删除所有子元素以及当前元素开发者社区
js 遍历 js代码 ul
https://cloud.tencent.com/developer/article/2226490
英姿勃勃的闹钟
4 天前
itclanCoder

Js如何删除所有子元素以及当前元素

前往小程序,Get 更优 阅读体验!
立即前往
腾讯云
开发者社区
文档 建议反馈 控制台
首页
学习
活动
专区
圈层
工具
MCP广场
文章/答案/技术大牛
发布
首页
学习
活动
专区
圈层
工具
MCP广场
返回腾讯云官网
itclanCoder
首页
学习
活动
专区
圈层
工具
MCP广场
返回腾讯云官网
社区首页 > 专栏 > Js如何删除所有子元素以及当前元素

Js如何删除所有子元素以及当前元素

作者头像
itclanCoder
发布 于 2023-02-26 15:06:27
发布 于 2023-02-26 15:06:27
9.2K 0 0
代码可运行
举报
文章被收录于专栏: itclanCoder itclanCoder
运行总次数: 0
代码可运行

示例展示

deleteallelem

具体描述

在原生 js 当中, html 的内容元素总是以嵌套的关系存在于网页中,因此,可以通过遍历树的方法访问网页里的每一个元素,当然也是可以删除指定的子元素的

原生js代码

代码语言: javascript
代码 运行次数: 0
运行
复制
// 删除元素的函数
function deleteChilds() {
   var ul = document.getElementsByTagName("ul")[0];  // 获取父级DOM
   // 判断是否包含子元素
   if(ul.hasChildNodes()) {
     var len = ul.childNodes.length;  // 子元素的个数
     for(var i = 0;i<len;i++) {       // 遍历
        ul.removeChild(ul.childNodes[0]);  // 从第一个元素开始删除

如下是 html 代码

代码语言: javascript
代码 运行次数: 0
运行
复制
<ul>
    <li>coder.itclan.cn</li>
    <li>itclan.cn</li>
    <li>aikelaidev.cn</li>
    <li>pay.aikelaidev.cn</li>

删除父级元素的所有节点,我们常规性的思维,很容易写这样的代码,如下的代码是无法删除干净的

代码语言: javascript
代码 运行次数: 0
运行
复制
function deleteChilds() {
   var ul = document.getElementsByTagName("ul")[0];  // 获取父级DOM
   var len = ul.childNodes.length;  // 子元素的个数
   for(var i = 0;i<len;i++) {       // 遍历
        console.log(ul.childNodes[i].nodeName)
        ul.removeChild(ul.childNodes[i]);  // 从第一个元素开始删除

当你把索引为0的子节点删除后那么很自然的原来索引为1节点此时它的索引变成0了,而这时变量i已经变成1了,程序继续走时就会删除原先索引为2的现在为1的节点,这样程序运行的结果就是只删除了一半的子节点

在遍历时因为删除了子节点, ul.childNodes.length 值已经减小,影响了遍历结果

我们应该从后面往前删除

代码语言: javascript
代码 运行次数: 0
运行
复制
function deleteChilds() {
   var ul = document.getElementsByTagName("ul")[0];  // 获取父级DOM
   var len = ul.childNodes.length;  // 子元素的个数
   for(var i = len-1;i>=0;i--) {       // 从后往前
        ul.removeChild(ul.childNodes[i]);  // 从第一个元素开始删除

Vue版本实现

如下是上面展示示例的代码

代码语言: javascript
代码 运行次数: 0
运行
复制
<template>
    <div class="wrap">
               <ul id="ul">
                  <li  v-for="(item,index) in lists" :key="index"><span>{{item}}</span><el-button  type="danger" @click="handleDelteItem(index)" size="mini">删除</el-button></li>
         <div class="deletAllBtn">
            <el-button type="primary" @click="handleDelete">删除所有元素</el-button>
</template>
<script>
    export default {
        name: 'deleteChildELem',
        data() {
            return {
                lists: ["coder.itclan.cn",'itclan.cn','tv.itclan.cn','short.itclan.cn','aikelaidev.cn']
        methods: {
            handleDelete() {
                // this.lists = [];  // 如果是使用Vue编程思维,删除所有子元素,直接操作数组为空,就删除所有子元素了的
                // 这里用原生js实现,主要是演示操作子节点的方式,在vue项目里,操作DOM的话,那使用vue就没有任何意义价值了的
                var ul = document.getElementById('ul');// 获取父级元素的DOM
                // 判断是否包含子元素
                if(ul.hasChildNodes()) {
                    var len = ul.childNodes.length;  // 子元素的个数
                    for(var i = 0;i<len;i++) {
                        ul.removeChild(ul.childNodes[0]);  // 从第一个元素开始删除
                // 也可以等价如下这样,逆向删除节点
                 *  for(var i = ul.childNodes.length-1;i>=0;i--) {
                        ul.removeChild(ul.childNodes[i])
            handleDelteItem(index) {
                // 如果是使用vue的话,那么直接操作数组的方法就可以了的,一行代码就可以可以解决
                this.lists.splice(index,1);
</script>
<style lang="scss" scoped>
.wrap {
    text-align:center;
span{
    display:inline-block;
    width: 200px;
ul>li {
  margin-bottom: 5px;
  border-bottom: 1px dashed #ccc;
 
推荐文章
英姿勃勃的闹钟  ·  Js如何删除所有子元素以及当前元素开发者社区
4 天前
小胡子的台灯  ·  金刚萨埵忏悔法:索达吉堪布-佛教导航
1 年前
精明的花卷  ·  ​Python-时间及日期-07-获取本周或上周几具体日期-腾讯云开发者社区-腾讯云
1 年前
豪爽的香烟  ·  ASPX文件转HTML - 开心技术 - 博客园
1 年前
霸气的煎饼  ·  C#文件操作 - 知乎
1 年前
魁梧的八宝粥  ·  【官方網店】LOCKLY Secure Plus 智能電子門鎖 (PGD628F) | 指紋 | 斜舌
1 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号