1.给数组去重的方法
利用对象相同属性值会被覆盖的特点来去重
let ary = [100, 200, 400, 200, 200];// 去除重复项function unique(ary) {// 1、创建一个新的对象,然后循环数组,把数组的每一项既当做属性名又当做属性值给对象新增键值对// 2、创建一个新的数组,然后用for in去遍历对象,把每一个键值对的属性值放到这个新数组中let obj = {};for (var i = 0; i < ary.length; i++) {ary[i] // 代表数组的每一项obj[ary[i]] = ary[i]; // 给object新增键值对// obj[100] = 100// obj[200] = 200}ary = [];for (var key in obj) {ary.push(obj[key])}return ary;}console.log(unique(ary));
2.获取DOM元素的方法
通过ID名来获取:document.getElementbyId(‘id’);-获得的是一个元素对象
- 通过类名来获取:document.getElementsByClassName(‘a’);获得的是一个元素集合
通过标签名来获取:ocument.getElementbyTagName(‘li’); -获得的是一个元素集合 ```javascript // 获取dom元素的方法
// document.getElementById('id名'):通过id名去获取元素,获取的是一个元素对象,如果获取不到就是null// context.getElementsByTagName('标签名'):通过标签名去获取元素,获取的是一个元素集合(类数组),如果获取不到就是空元素集合 []// context.getElementsByClassName('类名'):通过类名去获取元素,获取的是一个元素集合(类数组),如果获取不到就是空元素集合 []
// let box = document.getElementById('box');// console.log(box);// let ul = document.getElementById('ul');// let list = ul.getElementsByTagName('span');// console.log(ul);// 我想用byTagName获取id名为box的元素// let box = document.getElementsByTagName('div')[0]; // 获取id名为box的元素// console.log(box);let list = document.getElementsByClassName('a')console.log(list);
- context.querySelector,在指定上下文中通过选择器来获得元素,如果获取不到就是null- context.querySelectorAll,在指定上下文中通过选择器来获得元素集合,如果获取不到就是空元素集合 []- document.body:获取body- document.documentElement:获取html- document.head:获取头部<a name="crwgI"></a>## 3.节点与节点之间的关系属性- 元素对象- 整个页面都是节点组成的- 目前咱们用的最多的元素其实是节点的一种,叫做元素节点- 整个页面就是节点组成的,然而节点都是对象数据类型的```javascriptlet box = document.querySelector('#box');console.log(box.childNodes);// 节点名称 nodeType nodeName nodeValue// 元素节点 标签 1 大写大标签名 null// 文本节点 内容 空格 回车(换行) 3 '#text' 内容// 注释节点 注释节点 8 '#comment' 内容// 文档节点 document 9 '#document' null
- chilNodes:获取元素下的所有子节点(IE8以下不兼容)
- children:获取元素下所有的元素子节点
获得单个节点的时候获取不到是则是null,获取多个时,获取不到时得到的是[]
// 节点之间的关系属性// 1、childNodes:获取所有的子节点// 2、children:获取所有的元素子节点 (IE8及不兼容)【会把注释节点当做元素节点来识别】// 3、firstChild:获取第一个子节点// 4、lastChild:获取最后一个子节点// 5、firstElementChild:获取第一个元素子节点(IE8及不兼容)// console.log(ul.childNodes);// console.log(ul.children.length);// console.log(ul.firstChild);// console.log(ul.lastChild);console.log(ul.firstElementChild);
firstChild:获取第一个子节点
- lastChild:获取最后一个子节点
- firstElementChild:获取第一个元素子节点(IE8及不兼容)
- lastElementChild:获取最后一个元素子节点(IE8及不兼容)
- previousSibling:获取上一个哥哥节点
- nextSibling:获取下一个兄弟节点
- previousElementSibling:获取上一个哥哥元素节点(IE8及不兼容)
- nextElementSibling:获取下一个兄弟元素节点(IE8及不兼容)
parentNode:获取父亲节点
let a = document.getElementById('a');// console.log(ul.childNodes);// console.log(ul.children.length);// console.log(ul.firstChild);// console.log(ul.lastChild);// console.log(ul.firstElementChild);// console.log(a.previousSibling);// console.log(a.previousElementSibling);console.log(a.parentNode.parentNode.parentNode.parentNode.parentNode);// body-->html-->docuemnt-->null
4.节点的添加与删除
document.createElement(‘标签名’):在js中动态创建元素节点
- document.createTextNode(‘内容’): 在js中动态创建文本节点
父节点.appendChild(节点):把指定的节点插入到父节点的末尾
let div = document.createElement('div');// div.innerHTML = '111';// console.log(div);let text = document.createTextNode('123456');// console.log(text);div.appendChild(text)// 我想把div放到body的末尾document.body.appendChild(div);
