Blogger Information
Blog 29
fans 1
comment 0
visits 14855
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
dom的增删改查与留言板实战
风车
Original
600 people have browsed it

dom中增删改的常用方法

createElement 创建新元素 在document上面调用

  1. const ul = document.createElement("ul");

append(string/ele) 追加到父级的最后子节点后,在父节点上调用

  1. document.body.append(ul);

before 在某元素之前插入 在当前元素调用
注释:首先创建一个新元素Li,然后调用append方法,因为这个方法不光可以追加新节点还可以追加内容,通过append给新元素li添加内容,然后通过querySelectorAll 获取到li的类数组,以此拿到需要节点位置,然后在节点上调用before方法

  1. const li = document.createElement("li");
  2. li.append('new itme');
  3. li.style.color='red';
  4. // 拿到列表的第三个
  5. const a =document.querySelectorAll('.list li');
  6. a[2].before(li);

after 在某元素之后插入 在当前元素调用

  1. const li = document.createElement("li");
  2. li.append('new itme');
  3. li.style.color='red';
  4. // 拿到列表的第三个
  5. const a =document.querySelectorAll('.list li');
  6. a[2].after(li);

cloneNode(true) 克隆节点(输入true 表示包含子节点,不输入表示不包含) 在被克隆节点调用
注释:创建一个新变量,用来装克隆好的新元素,然后调用前面的方法,可以将克隆好的元素添加到节点的指定位置

  1. let newli =li.cloneNode(true);
  2. a[3].before(newli);

replaceChild(ele/pos) 替换子节点 在父节点调用
在父节点上调用,替换掉子节点,需要两个参数,一个是新节点,一个是被替换的节点

  1. ul.replaceChild(li,li);

remove(ele) 删除子元素 在父节点调用
注释:先获取到ul,然后在ul上调用,删除掉UL的子元素
例如下面的例子就是,删掉了ul的最后一个子元素,lastElementChild 是获取当前节点的最后一个子元素。然后调用remove().

  1. const ul =document.querySelector('.list');
  2. ul.lastElementChild.remove();
以某节点为参照插入标签

insertAdjacentElement(‘插入位置’,元素);
下面是插入的位置 一共有四个
afterBegin 开始标签之后,第一个子元素
beforeBegin 开始标签之前,是他的前一个兄弟元素
afterEnd 结束标签之后 是他的下一个兄弟元素
beforeEnd 结束标签之前 是他的最后一个子元素

  1. const li = document.createElement("li");
  2. li.style.color = "red";
  3. li.append('一个新节点');
  4. const ul =document.querySelector('.list');
  5. ul.insertAdjacentElement('beforeend', li);

JS操作页面元素

  1. <div class="box">
  2. <style>
  3. h2{
  4. color: red;
  5. }
  6. </style>
  7. <h2>通知</h2>
  8. <span style="display: none;"">试用期员工不参加</span>
  9. <p>今天下午加班</p>
  10. </div>

span中的样式 dispale:none 表示隐藏,添加的标签所有内容将会被删除
接下来演示JS操作页面元素的方法

textContent 返回所有内容 不包含标签

  1. const box = document.querySelector('.box');
  2. console.log(box.textContent);

innerText 返回文本内容

  1. console.log(box.innerText);

innerHTML 返回所有内容加上所有标签

  1. console.log(box.innerHTML);

outerHTML 返回当前元素的源代码
比如下方就返回box这个div里面的所有源代码

  1. console.log(box.outerHTML);

自定义属性对象

自定义属性以data- 为前缀

我们为这个按钮 添加了一个自定义属性 1 用的就是data-
dataset :自定义属性操作对象(在引用时省去前缀data- 直接引用后缀)
data-xxxx 后缀是自己为这个属性命名
具体操作如下

  1. <button data-index="1" onclick="console.log(this.dataset.index);"> </button>

js操作CSS

获取元素的行内样式 通过style属性

  1. <div style="color: red;">wode</div>
  2. <script>
  3. const div = document.querySelector('div');
  4. console.log(div.style.color);
  5. // </script>

一个元素的样式由外部内部行内等多种来源决定,叫做计算样式
通过getComputedStyle 来获取元素计算样式

  1. console.log(window.getComputedStyle(div).color);

因为getComputedStyle 获得的结果是只读 所以要通过parseInt来进行转换 然后通过行内样式来进行更新

  1. let width=window.getComputedStyle(div).width;
  2. width = parseInt(width);
  3. div.style.width = width + 200+'px';

留言板实战

JS代码

  1. function neir(ele){
  2. // 如果按下了回车键
  3. if (event.key==='Enter'){
  4. // 留言非空认证
  5. if (ele.value.length===0){
  6. alert('留言不能为空');
  7. // 重置焦点
  8. ele.focus();
  9. return false;
  10. }
  11. // 添加留言
  12. const ul=document.querySelector('.text1');
  13. // 为每一条留言添加一个删除按钮
  14. ele.value = ele.value +'<button onclick="del(this.parentNode)">删除</button>';
  15. ul.insertAdjacentHTML('afterbegin', `<li>${ele.value}</li>`);
  16. // 清空当前输入框
  17. ele.value=null; //当前输入框为空
  18. }
  19. }
  20. function del(ele) {
  21. // confirm 是弹框 让用户进行选择
  22. return confirm('是否删除?') ? ele.remove() : false;
  23. }

HTML和css代码

  1. <!-- 引入外部样式表 -->
  2. <link rel="stylesheet" href="css/demo.css">
  3. <!-- 引入外部脚本 -->
  4. <script src="js/demo.js"></script>
  5. </head>
  6. <body>
  7. <!-- --------头部---------- -->
  8. <header>
  9. <div class="top">
  10. <a href="">售后反馈留言</a>
  11. </div>
  12. </header>
  13. <!-- --------主题----------- -->
  14. <main>
  15. <div class="text">
  16. <input type="text" onkeydown="neir(this)" placeholder="请输入您的售后要求" autofocus>
  17. </div>
  18. <div class="wenben">
  19. <ul class="text1">
  20. </ul>
  21. </div>
  22. /* --------------默认样式-------------- */
  23. *{
  24. margin: 0;
  25. padding: 0;
  26. box-sizing: border-box;
  27. color: #000;
  28. }
  29. /* 移除下划线 */
  30. body a{
  31. text-decoration: none;
  32. }
  33. /* 移除li前面的小点 */
  34. li {
  35. list-style: none;
  36. }
  37. /* -----------头部区域----------- */
  38. body .top{
  39. height: 60px;
  40. background-color: beige;
  41. display: flex;
  42. place-content: center;
  43. place-items: center;
  44. }
  45. body .top a{
  46. font-size: 20px;
  47. text-indent: 20px;
  48. }
  49. /* -----------主体------------ */
  50. body main {
  51. margin: auto;
  52. width: 1200px;
  53. }
  54. /* 定义一个输入框 并给相关样式 */
  55. body main .text input{
  56. width:1200px;
  57. height: 40px;
  58. background-color: aqua;
  59. }
  60. /* 定义一个接收框展示 */
  61. body main .wenben{
  62. width: 1200px;
  63. background-color: azure;
  64. height: 2000px;
  65. }
  66. body main .wenben .text{
  67. margin: 50px 80px;
  68. }
  69. body main .wenben .text1 li {
  70. display: grid;
  71. grid-template-columns: 800px 50px;
  72. margin: 15px 80px;
  73. color: red;
  74. font-style: italic;
  75. }
  76. body main .wenben .text1 li button{
  77. color: red;
  78. background-color: rgb(230, 255, 255);
  79. width: 80px;
  80. height: 25px;
  81. }

运行展示

Correcting teacher:PHPzPHPz

Correction status:qualified

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
0 comments
Author's latest blog post