Blogger Information
Blog 27
fans 0
comment 0
visits 19023
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
JS基本语法7:DOM元素的增删改 \指定位置的插入\ 仿写留言板案例\dataset对象
茂林
Original
1110 people have browsed it

1. DOM元素的增删改 2. DOM元素内容的增删改查 3.指定位置的插入 4. 仿写留言板案例 5. dataset对象

1. DOM元素的增删改
  1. 1.createElement:新增元素
  2. 2.append:尾部追加元素
  3. 3.createDocumentFragment:增加片断
  4. 4.after:后面插入元素
  5. 5.before:前同插入元素
  6. 6.cloneNode(true):克隆元素(深度克隆)
  7. 7.replaceChild(new,old):替换子元素
  8. 8.remove:删除元素,自杀, removeChild:被(父元素)删除
  1. <script>
  2. /**
  3. * 1.createElement:新增元素
  4. * 2.append:尾部追加元素
  5. * 3.createDocumentFragment:增加片断
  6. * 4.after:后面插入元素
  7. * 5.before:前同插入元素
  8. * 6.cloneNode(true):克隆元素(深度克隆)
  9. * 7.replaceChild(new,old):替换子元素
  10. * 8.remove:删除元素,自杀, removeChild:被(父元素)删除
  11. */
  12. //1.createElement()
  13. //参数:预定义的html标签字符串
  14. //新增元素,第1步创建新元素,保存在变量中
  15. const ul = document.createElement("ul")
  16. //2.append():追加到页面中
  17. //参数:添加的对象或内容
  18. // document.querySelector("body").append(ul)
  19. document.body.append(ul)
  20. //添加多个元素
  21. //let li = document.createElement("li")
  22. //为新的元素添加文本内容
  23. // li.append("item")
  24. //ul.append(li)
  25. /* for (let i = 1; i <= 5; i++) {
  26. let li = document.createElement("li")
  27. li.append("item" + i)
  28. ul.append(li)
  29. } */
  30. //3.createDocumentFragment()
  31. //无参数
  32. //在页面中避免因新加元素频繁,影响页面加载的效率,先将新加的元素存入一个片断中
  33. //最后一次性添加到页面中
  34. let frag = document.createDocumentFragment()
  35. for (let i = 1; i <= 5; i++) {
  36. let li = document.createElement("li")
  37. li.append("item" + i)
  38. frag.append(li)
  39. }
  40. ul.append(frag)
  41. //4.after():后面插入元素
  42. //在插入的位置上调用after()方法
  43. //参数:插入的元素及内容
  44. //先找到插入元素的位置
  45. let three = ul.querySelector(":nth-child(3)")
  46. console.log(three)
  47. //创建要插入的元素
  48. let li = document.createElement("li")
  49. li.append("new-item-after")
  50. //插入
  51. three.after(li)
  52. //5.before():前面插入元素
  53. //在插入的位置上调用before()方法
  54. //参数:插入的元素及内容
  55. //先找到插入元素的位置
  56. three = ul.querySelector(":nth-child(3)")
  57. li = document.createElement("li")
  58. li.append("new-item-before")
  59. three.before(li)
  60. //6.cloneNode(true):克隆/复制元素
  61. //先找到需要克隆的元素
  62. //然后再追加或插入到指定的位置中
  63. let last = ul.lastElementChild
  64. let copy = last.cloneNode(true)
  65. //参数:true,代表深度克隆,会把子元素及其内容一起复制
  66. //不加参数true,只复制元素,不复制元素中的内容
  67. ul.append(copy)
  68. three.before(copy)
  69. //7.replace(new,old):替换子元素
  70. //父元素调此方法替换子元素
  71. //参数:new元素,old元素
  72. let four = ul.querySelector(":nth-child(4)")
  73. console.log(four)
  74. li = document.createElement("li")
  75. li.append("replace-li")
  76. ul.replaceChild(li, four)
  77. //8.removeChild:父元素删除子元素 remove:自己把自己删除,自杀
  78. ul.removeChild(ul.querySelector(":nth-child(2)"))
  79. ul.querySelector(":first-child").remove()
  80. </script>

1. DOM元素的增删改

2 DOM元素的内容增删改

1.textContent:查看元素内容,是全部内容,包括js,css,隐藏内容
2.innerText:查看已渲染的(可见)内容
3.innerHTML:查看/替换/删除子元素内容(html),原样显示出来了
4.outerHTML:查看/替换/删除元素‘自身’(html)及所有的子元素

  1. <body>
  2. <h3>HELLO WORLD</h3>
  3. <div class="box">
  4. <style>
  5. h2 {
  6. color: red;
  7. }
  8. </style>
  9. <h2>通知</h2>
  10. <span style="display: none">试用期员工不参加</span>
  11. <p>今天下午17:00开会, 开发部, 运营部全体参加~~</p>
  12. </div>
  13. </body>
  14. <script>
  15. /**
  16. * 1.textContent:查看元素内容,是全部内容,包括js,css,隐藏内容
  17. * 2.innerText:查看已渲染的(可见)内容
  18. * 3.innerHTML:查看/替换元素内容(html),原样显示出来了
  19. * 4.outerHTML:替换元素‘自身’(html)
  20. */
  21. console.log(document.querySelector("h3").textContent)
  22. console.log(document.querySelector(".box").textContent)
  23. console.log(document.querySelector(".box").innerText)
  24. console.log(document.querySelector(".box").innerHTML)
  25. document.querySelector(".box").innerHTML = "<h2>查看/替换元素内容</h2>"
  26. //.outerHTML = null === .remove()
  27. // document.querySelector(".box").outerHTML = null
  28. document.querySelector(".box").remove()
  29. </script>

3 指定位置插入元素

  1. (1) 插入位置
  2. 1. `beforebegin`:元素自身的前面(起始标签)
  3. 2. `afterbegin`:插入元素内部的第一个子节点之前
  4. 3. `beforeend`:插入元素内部的最后一个子节点之后
  5. 4. `afterend`:元素自身的后面(结束标签)
  6. (2) API 方法
  7. 1. `insertAdjacentElement()`:指定位置插入元素
  8. 2. `insertAdjacentText()`: 指定位置插入文本节点
  9. 3. `insertAdjacentHTML()`: 指定位置插入元素节点(DOMString)
  1. <body>
  2. <ul class="list">
  3. <li>item1</li>
  4. <li>item2</li>
  5. <li>item3</li>
  6. <li>item4</li>
  7. <li>item5</li>
  8. </ul>
  9. <script>
  10. //1.insertAdjacentElement():指定位置插入元素
  11. //有两个参数:1 插入元素的位置 2 插入的元素标签
  12. //插入元素的位置
  13. const ul = document.querySelector(".list")
  14. //插入元素的内容
  15. const h3 = document.createElement("h3")
  16. h3.append("商品列表")
  17. //在ul起始标签的前面插入h3
  18. // ul.insertAdjacentElement("beforebegin", h3)
  19. //在元素内容的第一个子节点之前 插入h3
  20. // ul.insertAdjacentElement("afterbegin", h3)
  21. //在元素内容的最后一个子节点之后插入h3
  22. // ul.insertAdjacentElement("beforeend", h3)
  23. //在元素ul结束标签的后面插入h3
  24. //ul.insertAdjacentElement("afterend", h3)
  25. //2.insertAdjacentText()
  26. //有两个参数:1 插入元素的位置 2 插入的文本内容
  27. //在ul起始标签的前面插入文本
  28. // ul.insertAdjacentText("beforebegin", "(特价商品)")
  29. //在ul元素内容的第一个子节点之前 插入文本内容
  30. //ul.insertAdjacentText("afterbegin", "(特价商品)")
  31. //在ul元素内容的最后一个子节点后面 插入文本内容
  32. //ul.insertAdjacentText("beforeend", "(特价商品)")
  33. //在ul结束标签的后面插入文本
  34. //ul.insertAdjacentText("afterend", "(特价商品)")
  35. // 3.insertAdjacentHTML():指定位置插入元素节点(DOMString)
  36. //在指定的位置插入html元素
  37. //可以将html字符串,直接解析成html元素
  38. let p = `<p style="color:red">商品数量:5件</p>`
  39. ul.insertAdjacentHTML("beforebegin", p)
  40. ul.insertAdjacentHTML("afterbegin", p)
  41. /**指定位置插入
  42. * (1)指定位置
  43. * 1.beforebegin:元素自身起始标签的前面
  44. * 2.afterbegin:插入元素内部的第一个子节点之前
  45. * 3.beforeend:插入元素内部的最后一个子节点之后
  46. * 4.afterend:元素自身结束标签的后面
  47. * (2)插入API方法
  48. * 1.insertAdjacentElement():指定位置插入元素
  49. * 2.insertAdjacentText():指定位置插入文本节点
  50. * 3.insertAdjacentHTML():指定位置插入元素节点(DOMString)
  51. */
  52. </script>
  53. </body>

4.读取自定义属性的方法

  1. 预定义属性: id,class,style, title...
  2. 自定义属性: data-前缀
  3. 注: data-不要写,蛇形->驼峰
  1. <body>
  2. <!--
  3. 1.预定义属性:id,style,class,name...
  4. 2.自定义属性:data- 前缀的属性
  5. 有两个方法获取
  6. 1.通过dataset
  7. 2.通过getAttribute()
  8. -->
  9. <h3 style="color: red">Hello world</h3>
  10. <div data-email="abc@qq.com" data-my-name="朱老师">我的邮件地址</div>
  11. <script>
  12. const h3 = document.querySelector("h3")
  13. console.log(h3.style.color)
  14. const div = document.querySelector("div")
  15. //无法使用以下方法获取自定义属性
  16. // console.log(div.data - email)
  17. //1.通过dataset对象方法获取
  18. //省去前缀data- ,dataset.email
  19. //my-name:转为小驼峰,myName dataset.myName
  20. console.log(div.dataset.email)
  21. console.log(div.dataset.myName)
  22. //2.使用getAttribute('data-email') getAttribute('data-my-name')
  23. console.log(div.getAttribute("data-email"))
  24. console.log(div.getAttribute("data-my-name"))
  25. </script>
  26. </body>

5.getComptedStyle()

  • 计算样式: 元素上的全样样式,包括行内,文档,外部等
  • 只读

    1. <head>
    2. <meta charset="UTF-8" />
    3. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    4. <title>getComputedStyle</title>
    5. <link rel="stylesheet" href="style.css" />
    6. <style>
    7. h3 {
    8. width: 200px;
    9. height: 50px;
    10. }
    11. </style>
    12. </head>
    13. <body>
    14. <h3 style="color: red">Hello World</h3>
    15. <script>
    16. const h3 = document.querySelector("h3")
    17. console.log(h3.style.color)
    18. //querySelector 无法获取对除行内样式以外的样式信息
    19. console.log(h3.style.width)
    20. console.log(window.getComputedStyle(h3).backgroundColor) //rgb(255, 255, 0)
    21. console.log(window.getComputedStyle(h3).width) //200px
    22. let width = window.getComputedStyle(h3).width
    23. //返回的是字符串
    24. //通过 parseInt()转成数值型
    25. width = parseInt(width) + 100 + "px"
    26. console.log(width)
    27. //通过行内样式改变width的值
    28. h3.style.width = parseInt(width) + 100 + "px"
    29. /**
    30. * getComputedStyle对象
    31. * 计算样式:元素上的全部样式,包括行内,文档,外部样式
    32. * 返回值:只读,
    33. * 想修改样式在行内样式里修改
    34. */
    35. </script>
    36. </body>
Correction status:Uncorrected

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
2 comments
徐涛 2023-08-18 13:42:36
啊撒大声地
1 floor
Author's latest blog post