博客列表 >dom增删改的常用方法

dom增删改的常用方法

P粉116103988
P粉116103988原创
2022年08月03日 21:24:11410浏览

1. 实例演示dom增删改的常用方法

代码如下:

  1. <script>
  2. /**
  3. * 1. createElement(ele): 创建新元素, document上调用
  4. * 2. append(string/ele): 追加到父级最后子节点后,在父节点上调用
  5. * 3. before(string/ele): 在某元素之前插入节点, 在当前元素上调用
  6. * 4. after(string/ele): 在某元素之后插入节点, 在当前元素上调用
  7. * 5. cloneNode(true): 克隆节点(true:包含子节点),在要被克隆的节点上调用
  8. * 6. replaceChild(ele,pos): 替换子元素,在父级节点上调用
  9. * 7. remove(ele): 移除子元素, 在父节点上调用
  10. */
  11. // 添加新元素UL:
  12. const ul = document.createElement('ul');
  13. document.body.append(ul);
  14. for(let i=0; i<5; i++){
  15. const li = document.createElement('li');
  16. li.append('text-'+(i+1));
  17. ul.append(li);
  18. }
  19. console.log(ul);
  20. // 创建一个新的li:把它追加到第3个li之前
  21. const li = document.createElement('li');
  22. li.append('php.cn ');
  23. li.style.color = 'red';
  24. // 获取第3个li
  25. let item = document.querySelector('li:nth-of-type(3)');
  26. console.log(item);
  27. // 在第3个li前面添加一个新li:
  28. item.before(li);
  29. // 克隆一个li,然后把它追加到原来第3个li的后面
  30. let clNode = li.cloneNode(true);
  31. item.after(clNode);
  32. // replaceChild()替换子元素:
  33. let targetNode = document.querySelector('li:last-of-type');
  34. // console.log(targetNode.textContent);
  35. const newNode = document.createElement('a');
  36. newNode.href = 'php.cn';
  37. newNode.append('php中文网');
  38. ul.replaceChild(newNode,targetNode);
  39. //移除:
  40. // 移除第一个li:
  41. ul.firstElementChild.remove();
  42. ul.querySelector('li:nth-of-type(4)').remove();
  43. </script>

效果图展示:

2. 改写留言板案例, 添加自定义样式

代码如下:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>留言板</title>
  8. </head>
  9. <style>
  10. *{
  11. margin: 0;
  12. padding: 0;
  13. box-sizing: border-box;
  14. }
  15. a{
  16. color: #000;
  17. text-decoration: none;
  18. }
  19. /* ul li{
  20. list-style: none;
  21. } */
  22. .text{
  23. width: 20em;
  24. height: 20em;
  25. margin: auto;
  26. background-color: bisque;
  27. text-align: center;
  28. overflow:auto;
  29. }
  30. .text .lyb2,
  31. .text h2{
  32. padding: 1em;
  33. }
  34. .text .lyb2{
  35. text-align: left;
  36. }
  37. .text .lyb2 .lists{
  38. padding-left: 1em;
  39. }
  40. .text .lyb2 .lists li{
  41. padding: 0.5em;
  42. }
  43. .text .lyb2 .lists li button{
  44. margin-left: 0.5em;
  45. background-color:rgb(10, 43, 174);
  46. color: #fff;
  47. }
  48. </style>
  49. <body>
  50. <div class="text">
  51. <h2>留言板</h2>
  52. <!-- <form action="">
  53. <label for="lyb">留言板:</label>
  54. <input type="text" onkeydown="addMsg(this)" id="lyb" name="lyb" autofocus placeholder="请输入您的留言信息" />
  55. <button onclick="addMsg(this)">提交</button>
  56. </form> -->
  57. <div class="lyb1">
  58. <label for="lyb">留言信息:</label>
  59. <input type="text" onkeydown="addMsg(this)" id="lyb" name="lyb" autofocus placeholder="请输入您的留言信息" />
  60. </div>
  61. <div class="lyb2">
  62. <h3>最新留言:</h3>
  63. <ol class="lists"></ol>
  64. </div>
  65. </div>
  66. <script>
  67. function addMsg(ele){
  68. // console.log(ele);
  69. // console.log(event);
  70. // console.log(event.type);
  71. // console.log(event.key);
  72. if(event.key === 'Enter'){
  73. // 添加一个li,为一条信息:
  74. let li = document.createElement('li');
  75. li.append(ele.value);
  76. if(ele.value.length === 0){
  77. alert('留言信息不能为空');
  78. ele.focus();
  79. return false;
  80. }
  81. // let ul = document.querySelector('.lists').append(li);
  82. let ul = document.querySelector('.lists');
  83. // ul.after(li);
  84. // ul.insertAdjacentElement('afterbegin',li)
  85. // 为每条留言添加一个删除按钮:
  86. ele.value = ele.value + '<button onclick="del(this.parentNode)">删除</button>';
  87. // ul.insertAdjacentElement('afterbegin',`<li>${ele.value}</li>`);
  88. ul.insertAdjacentHTML('afterbegin', `<li>${ele.value}</li>`);
  89. // 清空输入框:
  90. ele.value = null;
  91. }
  92. }
  93. function del(ele){
  94. return confirm('是否删除该信息?') ? ele.remove() : false ;
  95. }
  96. </script>
  97. </body>
  98. </html>

效果图展示:

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议