博客列表 >JavaScript的DOM获取遍历元素

JavaScript的DOM获取遍历元素

Pharaoh
Pharaoh原创
2022年07月27日 01:32:28694浏览

类数组

类数组是一个对象,只不过很像一个数组,类数组也有 lenght 属性,但是类数组并不具备数组的原型方法,所以类数组不能使用数组的方法

  • 常见的类数组:argments(函数的参数集合),Nodelist(节点列表),HTMLCollection(DOM 列表)等等

  • 类数组转为数组的方法:Array.form() , 展开运算符…rest :[...类数组]

DOM

文档对象模型,把 HTML 文档转换成节点树,每个 HTML 标签都是一个对象,可以使用 javascript 访问,修改这些对象

几个获取 DOM 对象的 API

  • querySelectorAll('CSS选择器') :选择一组对象
  • querySelector('CSS选择器') : 选择一组中的一个
  • getElementById('id') :使用 id 获取单个元素
  • getElementsByTagName('标签名') :使用标签名获取,不要忘了 Element 后面的s,它返回的是一个元素的集合
  • getElementsByClassName('标签名') :使用标签名获取,不要忘了 Element 后面的s,它返回的是一个元素的集合
  • 最常用的就是前两个

DOM 操作的几个快捷方式

document 是节点的入口,最顶层的节点可以作为 document 的属性

  • document.doucmentElement :获取 HTML 文档节点
  • document.body :获取整个 body 标签节点
  • document.head :获取整个 head 标签的节点

  • body.children : 获取某个节点的所有子节点(不包含文本节点)

  • body.firstElementChild : 获取某个节点的第一个节点(不包含文本节点)
  • body.lastElementChild : 获取某个节点的最后一个子节点(不包含文本节点)
  • body.previousElementsSiBling :获取某个节点的同级前一个节点(不包含文本节点)
  • div.nextElementsSiBling:获取某个节点的同级下一个节点(不包含文本节点)
  • body.parentElement:获取某个节点的父节点

获取表单里的元素和值(更快更优雅的方式)

  • document.forms获取所有表单类数组,document.forms.name/id获取某个表单
  • form.elements 获取表单所有元素类数组

实例

  1. <script>
  2. // 获取表单的类数组
  3. // let form = document.querySelector('form'); 不够优雅
  4. let form = document.forms.login;
  5. console.log(form);
  6. // 获取表单后,可以继续获取表单里的任何元素的类数组
  7. console.log("获取表单后,可以继续获取表单里的任何元素的数组");
  8. let elem = form.username.value;
  9. console.log(elem);
  10. // 所有的元素,不管嵌套了多深,都可以通过form.elements找到
  11. </script>

DOM遍历

  • 普通for循环,for in循环都不理想,而且for in会把不想看到的也遍历出来
  • 使用arr.forEach((value,index,data) => {})方法
    • value是遍历数组的值
    • index是遍历数组的索引(可省略)
    • data是数组本身(可省略)
    • forEach()方法内不支持break
  1. let last = document.querySelectorAll("ul li");
  2. console.log("遍历数组");
  3. // forEach()方法对数组的每个元素执行一次提供的函数
  4. // 大多数类数组没有forEach方法,Nodelist类型的有,所以没有转为真数组
  5. forEach(value,index,array)
  6. last.forEach((value, index, data) => {
  7. console.log(value);
  8. console.log(index);
  9. if (index % 2 === 0) {
  10. value.style.backgroundColor = "red";
  11. } else {
  12. value.style.backgroundColor = "lightgreen";
  13. }
  14. });

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