博客列表 >JS的获取元素和事件操作(0813)

JS的获取元素和事件操作(0813)

丶久而旧之丶
丶久而旧之丶原创
2020年09月20日 17:28:17853浏览

JS的DOM操作和事件

节点

  1. // 1.文档节点
  2. console.log(document);
  3. // 节点三要素
  4. // 节点类型
  5. console.log(document.nodeType);
  6. // 节点名称
  7. console.log(document.nodeName);
  8. // 节点的值
  9. console.log(document.nodeValue);
  10. // 查看文档类型
  11. console.log(document.doctype);
  12. // 查看根节点(html)
  13. console.log(document.documentElement);
  14. // 查看头节点
  15. console.log(document.head);
  16. // 查看标题
  17. console.log(document.title);
  18. // 查看主体
  19. console.log(document.body);
  20. // 操作节点
  21. document.body.style.backgroundColor = 'lightgreen';

获取元素

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>DOM操作</title>
  7. </head>
  8. <body>
  9. <div id='container'>
  10. <ul class='poster' name='poster'>
  11. <li name='active'>上午学习PHP</li>
  12. <li>下午学习JAVA</li>
  13. <li>晚上学习CSS</li>
  14. </ul>
  15. </div>
  16. <script>
  17. // 获取元素
  18. // 1.根据标签获取(返回一个对象集合)
  19. var ul = document.getElementsByTagName('ul');
  20. console.log(ul);
  21. // 返回的是一个对象集合要获取其中某个需要通过键获取
  22. console.log(ul[0]);
  23. console.log(ul.item(0));
  24. // 2.根据id获取(因为html中的id唯一性是人为遵守的,所以是返回具有指定id的第一个元素)
  25. var div = document.getElementById('container');
  26. console.log(div);
  27. // 也可以在对象集合中获取具有指定名称的元素
  28. console.log(ul.namedItem('poster'));
  29. // 获取指定的一个<li>
  30. var li = document.getElementsByTagName('li').namedItem('active');
  31. li.style.color = 'lightgreen';
  32. // 也可以在元素级别调用方法
  33. var li1 = ul.item(0).getElementsByTagName('li');
  34. console.log(li1);
  35. // 3.根据class获取(和标签一样返回对象集合)
  36. var ul1 = document.getElementsByClassName('poster');
  37. console.log(ul1);
  38. ul1.item(0).style.border = '2px solid lightblue';
  39. // 4.使用queryselector方法(推荐)参数为CSS选择器
  40. // querySelector()返回满足条件的第一个元素
  41. var li2 = document.querySelector('#container li');
  42. console.log(li2);
  43. // 获取第二个<li>
  44. var li3 = document.querySelector('li:nth-of-type(2)');
  45. console.log(li3);
  46. // querySelmectorAll()返回满足条件的元素集合(可以看做数组使用但是上面返回的对象集合不能)
  47. var lis = document.querySelectorAll('.poster>li');
  48. console.log(lis);
  49. lis.item(1).style.backgroundColor = 'lightcoral';
  50. </script>
  51. </body>
  52. </html>

NodeList

  1. // NodeList
  2. var div = document.querySelector('.act');
  3. // 打印节点数
  4. console.log(div.childNodes);
  5. // 文档中的换行,回车都是文本节点(nodeType === 3)
  6. console.log(div.childNodes.item(0).nodeType);
  7. // 元素节点(nodeType === 1)
  8. console.log(div.childNodes.item(1).nodeType);
  9. // 对于节点过滤
  10. for (var i = 0; i < div.childNodes.length; i++) {
  11. var cuName = div.childNodes.item(i);
  12. if (cuName.nodeType === 1) {
  13. console.log(cuName.tagName.toLowerCase());
  14. }
  15. }
  16. // 也可以通过children直接返回元素节点
  17. console.log(div.children);
  18. // 获取元素子节点
  19. console.log(div.firstElementChild);//第一个子节点
  20. console.log(div.children.item(1));//第二个子节点
  21. console.log(div.lastElementChild);//最后一个子节点
  22. // 获取父节点
  23. var p = document.querySelector('p');
  24. console.log(p.parentNode);

元素添加

  1. // 元素动态添加
  2. // 1.创建元素
  3. var p = document.createElement('p');
  4. // 2.设置元素样式或内容
  5. p.innerHTML = '<span style="color:lightcoral">JavaScript</span>真好玩';
  6. // 3.添加到页面中,必须在父节点上面添加
  7. document.querySelector('.item').appendChild(p);
  8. // 添加多个元素
  9. for (var i = 0; i < 5; i++) {
  10. var li = document.createElement('li');
  11. li.innerHTML = '列表项' + (i + 1);
  12. document.querySelector('.tain').appendChild(li);
  13. }
  14. // 上面方式建议不使用因为每添加一次页面就会渲染一次(可以把元素放在片段中最后一次性添加到页面中)
  15. var frag = document.createDocumentFragment();
  16. for (var a = 0; a < 5; a++) {
  17. var li1 = document.createElement('li');
  18. li1.innerHTML = '<span style="color:lightpink">列表项' + (a + 6) + '<span>';
  19. frag.appendChild(li1);
  20. }
  21. // 最后把片段添加到页面中
  22. document.querySelector('.tain').appendChild(frag);

事件

  1. // 事件
  2. // 先获取按钮
  3. var btn = document.querySelector('button');
  4. console.log(btn);
  5. // 绑定事件
  6. btn.addEventListener('mouseover', function (ev) {
  7. // ev.target为事件的触发者
  8. ev.target.style = 'width:80px;height:80px;background:lightpink;outline:lightpink groove 8px;border:none;font-size:150%';
  9. })
  10. // 取消元素的默认行为
  11. // 获取a连接(document.links可以获取文档所有连接)
  12. var a = document.links.item(0);
  13. a.onclick = function (ev) {
  14. // 禁用a标签的默认行为
  15. ev.preventDefault();
  16. btn.style = null;
  17. };
  18. var div = document.querySelector('.container');
  19. div.addEventListener('mouseover', function (ev) {
  20. ev.target.style = 'border-radius:40px;width:200px; transition:all 0.5s ease-out';
  21. })
  22. div.addEventListener('mouseout', function (ev) {
  23. ev.target.style = null;
  24. ev.target.style = 'transition:0.5s ease-out';
  25. })

ToDoList

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>todolist</title>
  7. <style>
  8. .status {
  9. display: none;
  10. }
  11. .item {
  12. width: 400px;
  13. overflow: hidden
  14. }
  15. .act1 {
  16. float: right;
  17. padding-left: 5px;
  18. box-sizing: border-box;
  19. background-color: lightseagreen;
  20. border-radius: 10px;
  21. clear: both;
  22. line-height: 1.5;
  23. }
  24. .action {
  25. float: left;
  26. box-sizing: border-box;
  27. background-color: lightblue;
  28. padding-left: 5px;
  29. border-radius: 10px;
  30. line-height: 1.5;
  31. clear: both;
  32. }
  33. li {
  34. list-style: none;
  35. }
  36. </style>
  37. </head>
  38. <body>
  39. <form action='' name='comment' method='POST'>
  40. <label for="content">请留言:</label>
  41. <input type='text' name='content' id='content'>
  42. <button>提交</button>
  43. <div class='item'>
  44. <ul></ul>
  45. </div>
  46. </form>
  47. <ul></ul>
  48. <div class="status">对方正在输入...</div>
  49. <script>
  50. // 获取表单
  51. var form = document.forms['comment'];
  52. // 获取ul
  53. var ul = document.querySelector('ul');
  54. // 获取div
  55. var div = document.querySelector('.status');
  56. // 问题和回答数组
  57. var arrq = ["你好", "你叫什么", "你几岁了", "你叫什么", "你在哪里"];
  58. var arra = ["你好哇", "我是小姐姐呀", "你问这个干什么", "嘤嘤酱", "我在你的内心深处"];
  59. // 绑定事件
  60. form.addEventListener('submit', function (ev) {
  61. // 禁用表单的默认行为
  62. ev.preventDefault();
  63. // 获取input的值
  64. var val = form.content.value.trim();
  65. // 判断input是否为空
  66. if (val.length != 0) {
  67. // 创建li
  68. var li = document.createElement('li');
  69. // 设置li内容
  70. li.innerHTML = val;
  71. // 给li设置class
  72. li.className = 'act1';
  73. // 把li添加到页面中
  74. ul.appendChild(li);
  75. // 添加完input清空并重新获取焦点
  76. form.content.value = "";
  77. form.content.focus();
  78. // 显示div
  79. div.style.display = "block";
  80. var vel = " ";
  81. // 获取问题数组的索引
  82. var index = arrq.indexOf(val);
  83. // 判断问题是否在问题数组中
  84. if (index >= 0) {
  85. // 存在则赋值
  86. vel = arra[index];
  87. } else {
  88. vel = '对不起回答不了您的问题';
  89. }
  90. // 创建回答li
  91. var ali = document.createElement('li');
  92. // 给回答li设置内容
  93. ali.innerHTML = vel;
  94. // 设置回答时间
  95. setTimeout(function () {
  96. ul.appendChild(ali);
  97. ali.className = "action";
  98. div.style.display = "none";
  99. }, 1000);
  100. } else {
  101. alert("内容不能为空!");
  102. form.content.value = "";
  103. form.content.focus();
  104. }
  105. });
  106. </script>
  107. </body>
  108. </html>

总结

1.了解了js的DOM操作和事件绑定
2.还需多敲代码熟记,编辑器没有提示时都不知怎么写了

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