博客列表 >DOM操作之增删改查/仿制简易留言板

DOM操作之增删改查/仿制简易留言板

汇享科技
汇享科技原创
2022年07月27日 15:25:57388浏览

DOM操作之增删改

API名称 描述
createElement 创建新元素
append 追加操作
before 在某一个元素节点之前插入
after 在某一个元素节点之后插入
cloneNode 克隆元素节点
replaceChild 替换元素
remove 移除元素

效果截图:
l6302yk9.png

  1. /* * 1. createElement(ele): 创建新元素, document上调用
  2. * 2. append(string/ele): 追加到父级最后子节点后,在父节点上调用
  3. * 3. before(string/ele): 在某元素之前插入节点, 在当前元素上调用
  4. * 4. after(string/ele): 在某元素之后插入节点, 在当前元素上调用
  5. * 5. cloneNode(true): 克隆节点(true:包含子节点),在要被克隆的节点上调用
  6. * 6. replaceChild(ele,pos): 替换子元素,在父级节点上调用
  7. * 7. remove(ele): 移除元素 谁调用删谁*/
  8. //createElement():创建新元素 在当前文档document上调用
  9. //创建一个ul元素
  10. const ul = document.createElement("ul");
  11. // 将ul追加到body中
  12. document.body.append(ul);
  13. //使用循环添加五个li
  14. for (let i = 0; i < 5; i++) {
  15. //创建一个li元素
  16. const li = document.createElement("li");
  17. // 将li追加到ul中
  18. ul.append(li);
  19. // 追加文本内容到li里
  20. li.append("item" + (i + 1));
  21. }
  22. //添加一个新元素到item2前面
  23. const li = document.createElement("li");
  24. li.append("新节点");
  25. li.style.color = "red";
  26. let item = document.querySelector("li:nth-of-type(2)");
  27. // 在某个元素节点上调用传的是要插入的值
  28. item.before(li);
  29. //添加一个新元素到item3后面
  30. const li1 = document.createElement("li");
  31. li1.append("新节点");
  32. li1.style.color = "blue";
  33. let item1 = document.querySelector("li:nth-of-type(4)");
  34. // 在某个元素节点上调用传的是要插入的值
  35. item1.after(li1);
  36. //克隆元素
  37. // cloneNode:在要被克隆的元素节点上调用
  38. const li3 = li1.cloneNode(true);
  39. let item2 = document.querySelector("li:last-of-type");
  40. item2.before(li3);
  41. //修改元素
  42. // replaceChild:修改对应的节点 用新节点替换就节点 在父节点上调用
  43. const newNode = document.createElement("li");
  44. newNode.style.color = "red";
  45. newNode.append("替换的");
  46. const jiu = document.querySelector("li:first-of-type");
  47. ul.replaceChild(newNode, jiu);
  48. // insertAdjacentElement(插入位置,元素);
  49. // 插入位置有四个
  50. // afterBegin: 起始标签后面
  51. // beforeBegin: 起始标签前面
  52. // afterEnd: 结束标签后面
  53. // beforeEnd: 结束标签之前
  54. // 在ul前面插入一个大标题
  55. const p = document.createElement("h3");
  56. p.append("标题");
  57. ul.insertAdjacentElement("beforebegin", p);
  58. //在ul之后插入大标题
  59. const p1 = document.createElement("h3");
  60. p1.append("标题");
  61. ul.insertAdjacentElement("afterend", p1);
  62. //删除元素
  63. // remove
  64. newNode.remove();
  65. p.remove();
  66. p1.remove();

留言板

  1. <div>
  2. <input type="" onkeydown="ly(this)" placeholder="请输入留言" autofocus />
  3. <ul class="list"></ul>
  4. </div>
  5. <script>
  6. const input = document.querySelector("input");
  7. input.style.border = "none";
  8. input.style.outline = "none";
  9. input.style.background = "#ccc";
  10. let width = window.getComputedStyle(input).width;
  11. width = parseInt(width);
  12. input.style.width = 200 + "px";
  13. let height = window.getComputedStyle(input).height;
  14. height = parseInt(height);
  15. input.style.height = 30 + "px";
  16. input.style.borderRadius = "20px";
  17. input.style.padding = "5px";
  18. const ul = document.querySelector("ul");
  19. ul.style.listStyle = "none";
  20. function ly(e) {
  21. if (event.key == "Enter") {
  22. // 1.拿到留言板的内容 判断是否为空
  23. if (!e.value) {
  24. alert("不能为空");
  25. return false;
  26. e.foucs();
  27. } else {
  28. // 2.将内容显示到页面中
  29. const ul = document.querySelector(".list");
  30. const li = document.createElement("li");
  31. let neirong = `<li style="color:red">${e.value}<button class="shanchu" onclick="del(this.parentNode)" style="margin-left:50px;width:50px border-radius:10px ; background:red ; color:#fff" >删除</button></li>`;
  32. ul.insertAdjacentHTML("afterbegin", neirong);
  33. // 3.清空输入框
  34. e.value = null;
  35. }
  36. }
  37. }
  38. function del(ele) {
  39. confirm("是否删除?") ? ele.remove() : false;
  40. }
  41. </script>
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议