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.节点与节点之间的关系属性
- 元素对象
- 整个页面都是节点组成的
- 目前咱们用的最多的元素其实是节点的一种,叫做元素节点
- 整个页面就是节点组成的,然而节点都是对象数据类型的
```javascript
let 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);