for in forof forEach
-
for in
- 会遍历到数组的属性,包含后添加的,不建议循环数组
- 循环声明的变量,就是每一项的下标
var arr=[1,2,4,5,6,7,'a']; for(var a in arr){//并不推荐循环数组,如果添加一个属性,会遍历数组的属性 a是下标 //循环对象a是键名 arr[a]是键值
-
for of
- 可以循环数组,不会遍历到数组属性
- 循环声明的变量,是数组的每一项
var arr=[1,2,4,5,6,7,'a']; for(let a of arr){//它可以循环数组 不会遍历数组的属性 a直接就是数组的每一项
-
forEach
var s=new Set([1,2,3,4,'a']); s.forEach((value,key)=>{ console.log(value,key); }) key与value相同
DOM
DOM是 Document Object Model 叫文档对象模型,所有以document开头的都是DOM操作;
- 所有的元素获取方式都属于dom操作:
- document.getElementById()通过id获取
- document.getElementsByTagName('')通过标签名获取到一组元素;
- document.querySelector()通过选择器获取到一个元素;
- document.querySelectorAll()通过选择器获取到一组元素。
- document.documentElement专门用来获取html标签的
- document.body 专门获取body标签
- 节点
- 所有的html属性也是节点,注释/换行也是节点,插入的文本内容。
- 节点和元素的区别:节点包含了以上内容,而元素只包含标签。
- 节点包含所有元素,但是元素不包含所有节点。
- 获取某个元素下所有子节点的方法
元素.childNodes:会获取到一组元素。
nodeValue 节点值 所有节点都是空的,文本节点除外,文本节点的值会是文本内容的字符串格式。
nodeType 节点类型 一共十二个,常用的:元素 1 属性2 文本3 注释8 文档9;
nodeName 节点名称 元素节点会返回这个元素的大写状态。
- 获取父节点: parentNode
- 获取第一个子节点:firstChild
- 获取第一个子元素:firstElementChild
- 获取最后一个子节点:lastChild
- 获取最后一个子元素:lastElementChild
- 获取和它同级的下一个节点:nextSibling、
- 获取和它同级的下一个元素:nextElementSibling
- 获取到和它同级的上一个节点:previousSibling、
- 获取到和它同级的上一个节点:previousElementSibling
- 所有的子元素(子集) -------(是一个集合,可以使用下标获取指定的子集):children
- 创建元素节点:document.createElement(元素标签)
- 创建属性节点:docment.createAttribute(元素属性)
- 创建文本节点:document.createTextNode(文本内容)
- 追加:appendChild(所要添加的新节点)
- 插入:insertBefore(新节点,已知节点-旧的)
- 替换:replaceChild(新节点,要被替换的节点)
- 删除:removeChild(要删除的节点)
- 复制节点:cloneNode(true----复制当前及其所有节点/false----复制当前节点)
- 获取属性:getAttribute(属性名)
- 设置属性:setAttribute(属性名,属性值)
- 删除属性:removeAttribute(属性名)