Blogger Information
Blog 15
fans 0
comment 0
visits 10873
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
Javascript的类数组、获取DOM元素API、表单元素获取、遍历DOM树
P粉932932019
Original
517 people have browsed it

一、类数组

  1. // 定义数组
  2. let arr = ["name", "age", "sex", "add"];
  3. console.log(arr);
  4. // 定义对象
  5. let obj = {
  6. 0: "name",
  7. 1: "age",
  8. 2: "sex",
  9. 3: "add",
  10. length: 4,
  11. };
  12. console.log(obj);

通过打印可以看出数组与对象的区别就是Prototype构造器不一样,其实array也是属于object的一个特殊分支。

1、纯数组:

  • 每个值对应键值/索引,默认从0开始递增。
  • 有length属性,数组长度
  • 数组也是对象

2、类数组:

  • 其实就是对象字面量,与数组相似,也拥有length属性。

3、访问形式:

  • 数组:
    console.log(arr[0]);

  • 类数组:
    console.log(obj[0]);

二者的访问形式是完全一样的。

但是,如果使用对象的点语法访问类数组则会报错,是因为标识符不能以数字开头

console.log(obj.0); //报错

二、获取DOM元素的API

1、querySelectorAll(css-selector),返回类数组。

参数css-selector: css选择器,css怎么获取就怎么写!


- 获取DOM元素
const items = document.querySelectorAll(".list .item");(注意.list与.item之间有个空格)


从上图可以看出打印出来的Prototype是类数组Nodelist(也叫:节点列表对象)

- 获取节点列表对象的键值
console.log(items.keys());


从上图可以看出打印出来的是数组,接口是Iterator,表示可以被遍历,可以使用for-of进行遍历

- 使用for-of进行数组遍历

  1. for (let k of items.keys()) console.log(k); //打印键名
  2. for (let v of items.values()) console.log(v); //打印键值
  3. for (let kv of items.entries()) console.log(kv); //打印数组

- 使用forEach进行数组遍历

  1. items.forEach((v) => console.log(v));
  2. // 这是箭头函数简化结果,原生写法不赘述

2、querySelectory(),返回一个DOM对象

返回类数组集合中的“第一个”


演示1:返回类数组中的第一个元素(使用querySelectorAll())

  1. const items = document.querySelectorAll(".list .item:first-of-type");
  2. // 返回Nodelist类数组,虽然只有一组数组
  3. console.log(items[0]);
  4. // 返回数组中的“第一组”的值:<li class="item"></li>

演示2:返回类数组中的第一个元素(使用querySelector()),等同于上述演示1

  1. const items = document.querySelector(".list .item");
  2. // 返回数组中的“第一组”的值:<li class="item"></li>

3、快捷方式获取

  1. // 获取head
  2. console.log(document.querySelector("head"));
  3. console.log(document.head); //<head>...</head>
  4. // 获取body
  5. console.log(document.querySelector("body"));
  6. console.log(document.body); //<body>...</body>
  7. // 获取title
  8. console.log(document.querySelector("title").textContent); //注意此处语法
  9. console.log(document.title); //这是文档title标题

上述代码,第一行为完整写法,第二行为简写。

三、获取表单元素

  1. // 获取元素name或者id
  2. console.log(document.forms.regist.uname);
  3. console.log(document.forms.login);
  4. // 获取元素值
  5. console.log(document.forms.regist.uname.value);

获取ID值等同于获取name值,为了添加样式方便,尽量使用id。

四、遍历DOM树

  1. // 使用类获取
  2. let ul = document.querySelector(".list");
  3. // 返回元素类型的节点,是个类数组
  4. let larray = ul.children;
  5. // 把类数组转换成纯数组
  6. let array1 = Array.from(larray);
  7. // 把类数组转换成纯数组
  8. let array2 = [...larray];
  9. // 遍历数组
  10. array2.forEach((li) => (li.style.color = "red"));
  11. // 获取第一个元素的两种方式
  12. array2[0].style.color = "green";
  13. ul.firstElementChild.style.color = "green";
  14. // 获取第二个元素
  15. ul.firstElementChild.nextElementSibling.style.color = "yellow";
  16. // 获取最后一个元素
  17. ul.lastElementChild.style.color = "blue";
  18. // 获取最后一个元素的前一个
  19. ul.lastElementChild.previousElementSibling.style.color = "pink";
  20. // 获取父节点
  21. ul.lastElementChild.parentElement.style.border = "2px solid";

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