Blogger Information
Blog 46
fans 2
comment 0
visits 19468
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
1. 实例演示dom增删改的常用方法 2. 改写留言板案例, 添加自定义样式
P粉314265155
Original
323 people have browsed it

DOM增删改

  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  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>dom 增删改</title>
  8. </head>
  9. <body>
  10. <script>
  11. // 创建元素document.createElement
  12. const ul = document.createElement('ul');
  13. // 添加ul内部元素 append 追加元素 追加内容
  14. document.body.append(ul);
  15. // 在ul内添加多个li
  16. // 方法一
  17. for(let i = 0 ; i < 5 ; i++){
  18. const li = document.createElement('li');
  19. // 给 li给元素 添加内容 注是括弧里面(i+1)
  20. li.append('item-'+(i+1));
  21. // 在ul内添加li
  22. ul.append(li);
  23. }
  24. console.log(ul);
  25. console.log('================');
  26. // 在某个节点之前插入 before
  27. // 创建li 元素
  28. const li = document.createElement('li');
  29. // ('new item') 添加新的节点 注意括弧;里面的单引号
  30. // li 元素 里面添加内容
  31. li.append('new item');
  32. li.style.color ='red';
  33. // 在某个元素之前插入,先获取这个元素
  34. // 采用伪类获取
  35. const itm = ul.querySelector('li:nth-of-type(3)')
  36. // 在获取的元素之前插入新的元素
  37. itm.before(li);
  38. // 在获取的元素之后插入新的元素
  39. // 1、克隆 方法 clon clonNode 克隆节点
  40. // 克隆新节点 注意 如果后面(ture) 是,带着节点内容克隆的,否则只克隆节点元素
  41. let newnode = li.cloneNode(true);
  42. // 在某个节点之后插入
  43. itm.after(newnode);
  44. // 在某个节点 元素 之前之后添加 insertAdjacentElement
  45. // begin 表示开始标签、 end标识结束标签
  46. // beforebegin afterbegin beforeend afterend
  47. ul.style.border = ' 2px solid red ';
  48. // 在UL列表前面增加标题
  49. const h3 = document.createElement('h3');
  50. h3.append('商品');
  51. // 开始标签之前插入
  52. ul.insertAdjacentElement('beforebegin',h3);
  53. // 开始标签之后插入并且插入样式
  54. ul.insertAdjacentHTML('beforebegin','<li style = "color:red">之后插入</li>');
  55. // 结束标签之前
  56. ul.insertAdjacentHTML('beforeend','<li style = "color:red">之后插入</li>');
  57. ul.insertAdjacentHTML('beforeend','<h3>你好</h3>');
  58. // 元素替换
  59. // replaceChild() 在父元素调用
  60. // parentNode.replaceChild( 新节点,被替换的节点)
  61. const lastNode = ul.querySelector('li:last-of-type');
  62. const link = document.createElement('a');
  63. link.href = 'http://www.baidu.com';
  64. link.append('百度');
  65. ul.replaceChild(link,lastNode);
  66. // remove 移除
  67. // 移除第一个节点
  68. ul.firstElementChild.remove;
  69. // 移除最后一个节点
  70. ul.lastElementChild.remove;
  71. // 移除某一个节点
  72. // 移除第二个
  73. ul.querySelector('li:nth-of-type(2)').remove
  74. </script>
  75. </body>
  76. </html>
效果

jsd的操作效果

  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  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>js的操作内容</title>
  8. </head>
  9. <body>
  10. <!-- 你好就是内容 内容就是文本 -->
  11. <!-- <h2>你好</h2> -->
  12. <div class="box">
  13. <style>
  14. h2 {
  15. color: aqua;
  16. }
  17. </style>
  18. <h2>通知</h2>
  19. <!-- display:none 不可见、 -->
  20. <span style="display: none"> 注意</span>
  21. <p>下雨</p>
  22. </div>
  23. <script>
  24. // 1、textContent() 首选
  25. // 返回所有内容,包括 css style display 内容
  26. const box = document.querySelector('.box')
  27. console.log( '%c'+box.textContent, 'color:red');
  28. // 2、innerText() 只输出文本 ,css、style display 内容 不输出
  29. console.log( '%c'+box.innerText, 'color:blue');
  30. // 3、innerHTML() 与 textContent() 相比只 展示标签,带着标签 次选
  31. console.log( '%c'+box.innerHTML, 'color:red');
  32. // 举例
  33. let p = document.createElement('p');
  34. let ul ='<a href = "http://www.baidu.com">百度</a>'
  35. p.innerText =ul;
  36. box.append(p);
  37. // 对象
  38. console.log( box);
  39. // 4、outerHtml() 返回当前包裹当前元素字符串,也就是源代码 不能用json传递
  40. console.log( '%c'+box.outerHTML, 'color:blue');
  41. // 替换 内容
  42. // box.outerHTML = '<h3 style = "color:red">hello</h3>';
  43. // 删除:给一个null相当于删除
  44. // box.outerHTML = null ;
  45. </script>
  46. </body>
  47. </html>
效果

留言板

  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  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>dom案例:留言板 toDoList 留言板</title>
  8. </head>
  9. <body>
  10. <!-- placeholder="请输入留言" 提示文字 自动获取焦点autofocus -->
  11. <!-- onkeydown="" 事件,当键盘按下时触发 this把当前元素 input传入 -->
  12. <input type="text" onkeydown="addMsg(this)" placeholder="请输入留言" autofocus>
  13. <ul class="list"></ul>
  14. <script>
  15. function addMsg(anjian) {
  16. console.log(anjian);
  17. // 事件方法 中有一个对象,表示当前事件:event 按键盘的事件
  18. console.log(event);
  19. // 按键类型 keytype
  20. console.log(event.type);
  21. // 获取当前按键的信息 即按 键盘哪个键
  22. console.log(event.key);
  23. // 判断用户是否提交留言,且 是否按下回车键
  24. if(event.key =='Enter'){
  25. // 第一步、留言是否为空
  26. if(anjian.value.length ==0) {
  27. alert ('留言不能为空');
  28. // 重置焦点
  29. anjian.focus;
  30. return fsale;
  31. }else{
  32. // 添加留言输出控制台
  33. console.log(anjian.value);
  34. const li =document.createElement('li')
  35. li.append(anjian.value);
  36. // 2\ 添加到文档 ,且当前插入位置为 依次插入,有问题的
  37. // document.querySelector('.list').append(li);
  38. //2.1 应该最后输入的插到最开始位置 注意 如果最开始 的值null 会报错,需要做个判断
  39. // document.querySelector('.list').firstElementChild.append(li);
  40. // 2.2 判断是否已有第一个元素
  41. const ul = document.querySelector('.list');
  42. // if (ul.firstElementChild != null ){
  43. // ul.firstElementChild.before(li);
  44. // }
  45. // else{
  46. // ul.append(li);
  47. // }
  48. // 以上简化版
  49. // 注意括弧里面是 逗号
  50. // 进一步简化 就可以省略
  51. // console.log(anjian.value);
  52. // const li =document.createElement('li')
  53. // ul.insertAdjacentHTML('after','<li>${anjian.value}</li>');
  54. // 为每条留言添加删除功能 并且增加事件
  55. // ele.value = ele.value + '<button onclick="del(this.parentNode)">删除</button>';
  56. anjian.value= anjian.value + '<button onclick= "del(this.parentNode)">删除</button>';
  57. ul.insertAdjacentHTML('afterbegin' , `<li>${anjian.value}</li>`);
  58. // ul.insertAdjacentHTML('afterbegin', `<li>${ele.value}</li>`);
  59. // 3\ 清空输入框
  60. anjian.value =null;
  61. }
  62. // 删除功能
  63. }
  64. }
  65. function del(anjian){
  66. console.log(anjian);
  67. // anjian.remove()
  68. // 增加判断
  69. if (confirm('是否删除')){
  70. anjian.remove()
  71. }
  72. // 简化 三元运算
  73. // confirm('是否删除')?anjian.remove():false;
  74. // 另一方式
  75. // return confirm('是否删除?') ? (anjian.outerHTML = null) : false;
  76. }
  77. </script>
  78. </body>
  79. </html>
效果

自定义属性对象dataset

  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  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>自定义属性对象dataset</title>
  8. </head>
  9. <body>
  10. <!--
  11. 1、预定义属性 id class title 官方的
  12. 2、 自定义 :data-
  13. -->
  14. <div class="btn-group">
  15. <!-- 将每个按钮的索引 保存到一个自定义属性,方便用户操作 -->
  16. <!-- 添加事件 -->
  17. <!-- 此处 index 省略了dataset- 前缀 -->
  18. <button data-index="1" onclick="console.log(this.dataset.index);">btn1</button>
  19. <button data-index="2" onclick="console.log(this.dataset.index);" >btn2</button>
  20. <button data-index="3" onclick="console.log(this.dataset.index);">btn3</button>
  21. <div class = "my" data-my-email="123456@qq.com"> 我的邮箱</div>
  22. </div>
  23. <script>
  24. const div =document.querySelector ('.my');
  25. console.log(div);
  26. // 注意 my-email 转为驼峰式
  27. console.log(div.dataset.myEmail);
  28. </script>
  29. </body>
  30. </html>
效果

js操作css

  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  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>js操作css</title>
  8. <style>
  9. /* 文档内部样式 */
  10. div {
  11. width: 100px;
  12. height: 200px;
  13. }
  14. </style>
  15. </head>
  16. <body>
  17. <div style="color: red; background-color: blue;"> Hello</div>
  18. <script>
  19. // 获取元素样式
  20. const div = document.querySelector('div');
  21. // 行内样式 获取不到文档内部样式
  22. console.log(div.style,div.style.backgroundColor);
  23. // 一个元素的最终样式,有外部,内部行内多种级别多个来源确定,所以叫计算样式
  24. // getComputedStyle 因为 只读 所以只能通过行内style 来更新
  25. console.log(window.getComputedStyle(div).width);
  26. console.log('========');
  27. // window 全局对象
  28. console.log(window);
  29. console.log('========');
  30. console.log(document.defaultView);
  31. console.log('========');
  32. // parseFloat parseInt 字符转换。就把 获取的100px 变为 100
  33. let width = window.getComputedStyle(div).width
  34. width = parseInt (width);
  35. console.log(width);
  36. div.style.width = width + 200 +'px ';
  37. </script>
  38. <!-- <iframe src="" frameborder="0"></iframe> 添加画中画 -->
  39. <!-- <iframe src="" frameborder="0"></iframe> -->
  40. </body>
  41. </html>
效果

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
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!