01-节点操作-创建元素·createElement||appendChild

<body><div class="box"><span>我是前端小白</span></div><script>// 创建元素:document.createElement('标签名')let div = document.createElement('div')console.log(div)// 需要给div添加内容:属性(或者事件)// 添加类名div.classList.add('item')// 添加文本div.innerText = '我是前端大佬'// 添加事件div.onclick = function () {this.style.backgroundColor = 'red'}// 先用以下后面的知识:父元素.appendChild(元素)// 给body增加一个divdocument.body.appendChild(div)// 扩展:现在有几种方式,可以向body添加一个标签?// 1. document.write()// document.write('<a href="">点我</a>')// // 禁用:不要用// // 2. document.body.innerHTML// document.body.innerHTML = '<span>X</span>'// 常用// inner HTML和document.createElement的取舍关系document.querySelector('span').onclick = function () {this.style.backgroundColor = 'green'}// 需求:给'我是前端小白'增加一个span兄弟:'前端是最好的语言'// document.querySelector('.box').innerHTML += '<span>前端是最好的语言</span>'// innerHTML如果操作的元素的内容本身有事件:事件会被清理掉// document.createElementlet span = document.createElement('span')span.innerText = '我不是前端新人'document.querySelector('.box').appendChild(span)// document.createElement方式是适合动态的添加元素:不会影响原来元素的事件内容// 如果要写入的内容不带事件:优先使用innerHTML(操作起来更简单);如果原来的内容本身有事件,建议使用document.createElement()创建元素,再使用appendChild()放进去</script>
</body>

注意:
1.innerHTML如果操作的元素的内容本身有事件:事件会被清理掉
2.document.createElement方式是适合动态的添加元素:不会影响原来元素的事件内容
3.如果要写入的内容不带事件:优先使用innerHTML(操作起来更简单);如果原来的内容本身有事件,建议使用document.createElement()创建元素,再使用appendChild()放进去

02-节点操作-追加子元素 appendChild

<body><ul class="now"><li>隔壁老王1</li><li>隔壁老王2</li><li>隔壁老王3</li></ul><ul class="current"><li>隔壁老李1</li><li>隔壁老李2</li><li class="current-item">隔壁老李3</li></ul><script>// 需求1:给隔壁老王添加一个li元素// 1. 先创建一个li:空lilet li = document.createElement('li')// 2. 添加文本:li.innerText = 值li.innerText = '新老王'// 3. 将li放到ul.now的后面:作为ul的最后一个孩子let now = document.querySelector('.now')now.appendChild(li)// appendChild永远是成为父元素的最后一个孩子元素// 扩展:appendChild()的特性// 1. 如果后面的元素是本身就存在:那么效果是移动效果let currentItem = document.querySelector('.current-item')console.log(currentItem)now.appendChild(currentItem)// 2. 深入扩展:如果元素本身还带子元素,打包带走let current = document.querySelector('.current')now.appendChild(current)</script>
</body>

注意:
1.appendChild永远是成为父元素的最后一个孩子元素
2.如果后面的元素是本身就存在:那么效果是移动效果
3.如果元素本身还带子元素,打包带走

03-节点操作-插入子元素 inserBefore(新元素,旧元素)

<body><ul class="now"><li>隔壁老王1</li><li class="current">隔壁老王2</li><li>隔壁老王3</li></ul><script>// 需求:再current对应的li之前插入一个新li:inserBefore(新元素,旧元素)// 1. 创建一个新lilet li = document.createElement('li')li.innerText = '新老王'// 2. 获取到已知li:li.currentlet oldLi = document.querySelector('.current')// 3. 给父元素now插入新lioldLi.parentElement.insertBefore(li, oldLi)// 扩展:insertBefore与appendChild的其他效果一致:如果元素已经存在:移动;如果元素带孩子:打包移动</script>
</body>

注意:
1.inserBefore(新元素,旧元素)
2.insertBeforeappendChild的其他效果一致:如果元素已经存在:移动;如果元素带孩子:打包移动

04-节点操作-替换子元素 父元素.replaceChild(新元素,旧元素)

<body><ul class="now"><li>隔壁老王1</li><li class="current">隔壁老王2</li><li>隔壁老王3</li></ul><script>// 替换子元素:父元素.replaceChild(新元素,旧元素)// 1. 创建新元素let li = document.createElement('li')li.innerText = '新老王'// 2. 找到旧元素let oldLi = document.querySelector('.current')// 3. 父元素替换oldLi.parentElement.replaceChild(li, oldLi)// replaceChild()应用场景极少</script>
</body>

注意:
1.替换子元素:父元素.replaceChild(新元素,旧元素)
2.应用场景极少

05-节点操作-删除元素 remove()||removeChild()

<body><ul class="now"><li>隔壁老王1</li><li class="current">隔壁老王2</li><li>隔壁老王3</li></ul><script>// 需求:删掉 li.current元素// 1. 获取到目标li元素let current = document.querySelector('.current')// 2. 自己删除或者通过父级元素删除// 2.1 自己删除current.remove()// 2.2 通过父级元素删除// current.parentElement.removeChild(current)</script>
</body>

06-节点操作-克隆元素 cloneNode

<body><ul class="now"><li>隔壁老王1</li><li>隔壁老王2</li><li>隔壁老王3</li></ul><ul class="current"><li>隔壁老李1</li><li>隔壁老李2</li><li class="current-item">隔壁老李3</li></ul><script>// 扩展:appendChild()的特性let now = document.querySelector('.now')// 1. 如果后面的元素是本身就存在:那么效果是移动效果let currentItem = document.querySelector('.current-item')console.log(currentItem)// 复制一份// let newLi = currentItem// 无法解决:元素是一个对象,对象传值是引用传值// 克隆// let newLi = currentItem.cloneNode()  // 浅克隆:只有元素自己的结构// 深克隆:参数为true就好let newLi = currentItem.cloneNode(true)now.appendChild(newLi)// 需要用到克隆// 需要一个元素一模一样,但是又不希望原来的元素受影响:可以采用克隆// 克隆的好处:简化结构的创建过程</script>
</body>

注意:
1.克隆分为:浅克隆 和 深克隆
2.浅克隆:只有元素自己的结构cloneNode()
3.深克隆:复制全部结构:cloneNode(true)
4.需要一个元素一模一样,但是又不希望原来的元素受影响:可以采用克隆

07-节点三要素

  • 1.节点都有三要素:nodeType(ul和li都一样:1),nodeValue(ul和li都一样:null),nodeName(大写表签名)

节点操作-创建createElement||appendChild-/追加-/插入insertBefore-/替换replaceChild-/删除remove-克隆元素 cloneNode(增删改查)相关推荐

  1. Python selenium对js元素进行增删改查操作

    1.首先,我们列出Selenium 对JS元素操作的4中方法: 增加属性 driver.execute_script("arguments[0].%s=arguments[1]" ...

  2. 怎么用php操作mysql删除数据库代码_如何使用php操作mysql的增删改查?

    php操作mysql的增删改查方法:1.插入语句[insert into 数据表名(字段1,字段2,....) values("值1","值2",..)]:2. ...

  3. java调用oracle删除,使用IDEA对Oracle数据库进行简单增删改查操作

    1.1 java中的数据存储技术 在java中,数据库存取技术可分为如下几类: 1.jdbc直接访问数据库 2.jdo(java data object)是java对象持久化的新的规范,也是一个用于存 ...

  4. JDBC-03:PreparedStatement如何实现对数据库的增删改查操作

    文章目录 一.使用PreparedStatement实现CRUD操作 (1)使用PreparedStatement实现增删改操作 1.PreparedStatement介绍 2.实现数据库的添加操作 ...

  5. 节点操作-创建并添加删除节点替换克隆节点

    <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8&quo ...

  6. 数据结构,单链表讲解,并使用Java代码实现单链表增删改查【尾部添加,中间插入、修改节点、删除节点、展示链表】

    文章目录 单链表 什么是单链表,链式存储结构详解 链表的节点 头节点,头指针和首元节点 单链表的实现 1.尾部添加新节点 思路分析 代码实现 注意事项 2.按照编号插入新节点 思路分析 代码实现 注意 ...

  7. python单链表操作_单链表的创建、增删改查等操作(Python实现)

    单链表的创建.增删改查等操作(Python实现) # 单链表 class Node: def __init__(self, elem): self.elem = elem self.next = No ...

  8. C案例:创建顺序表并进行增删改查操作

    一.顺序表概述 顺序表是在计算机内存中以数组的形式保存的线性表,线性表的顺序存储是指用一组地址连续的存储单元依次存储线性表中的各个元素.使得线性表中在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中 ...

  9. HBase--JavaAPI的操作,创建表修改表,增删改查数据

    DDL: public class HbaseClientDemo {Connection conn = null;@Beforepublic void getConn() throws Except ...

最新文章

  1. 2004-10-26+ 用户输入的安全问题
  2. Oracle发布开源的轻量级 Java 微服务框架 Helidon
  3. 记一次小程序富文本的小小优化
  4. 用.NET Core实现装饰模式和.NET Core的Stream简介
  5. 83. 删除排序链表中的重复元素
  6. pythonnumpy矩阵详解_python常用模块numpy解析(详解)
  7. BAT架构技术专题合集500+
  8. python正则表达式面试题,带有utf8问题的python正则表达式
  9. Atitit 提升开发效率法 fx t35 Atitit 提升开发效率法---开发方法架构简化法.docx 目录 1. 主要几个层次上简化开发 1 1.1. ,开发体系方法使用简单方法 1 1.2.
  10. 苹果鼠标滚轮驱动_双飞燕血手幽灵V8M Max电竞鼠标兼具功能和性价比
  11. cad看图软件看图软件哪个好?
  12. Promise(一)介绍、fs读取文件、AJAX请求
  13. WIN10没有照片查看器【已解决】
  14. 咸鱼的 GitHub 情报 | 20191229 期
  15. C语言学习之选择结构程序设计总结
  16. CANoe.DiVa 操作指南 - 时间参数配置
  17. dea的matlab算法
  18. SyncNavigator(数据库同步软件)介绍以及使用说明
  19. flex 文字竖排_Flex 利用 sprit 实现字体 竖排 旋转
  20. Java修炼之凡界篇 筑基期 第05卷 数组 第04话 数组的使用

热门文章

  1. 在Linux下搭建 miniGUI mStudio环境
  2. 评估企业是否适合开发复合业务服务
  3. WIN7下安装Oracle 10g 的详细过程以及有关问题的解决(转)
  4. Idea上传项目到gitee
  5. 2021年安全员-A证-主要负责人(广东省)考试APP及安全员-A证-主要负责人(广东省)考试试题
  6. K2L:工业和汽车网络通信设备的开发工具
  7. 中谷项目(九)—如何将图片存入数据库并从中读取
  8. MySQL 主从同步模式
  9. 科大讯飞麦克风阵列使用感受(六麦,XFM10621)
  10. Python动态网页数据收集