一.document对象
(1).拥有方法
document.getElementById('box') //在IE8及以下是不分大小写的,而且name值也能匹配上
document.getElementsByClassName('') //IE8及以下是用不了的
document.getElementsByTagName() 都兼容
document.getElementsByName() 用的非常少
(2).备注
id(钩子):能不用就不用,模块化开发id只用于后端注入数据
除去getElementbyId的剩下的方法都是获取一组的,通过下标([0])可以访问
(3).querySelector/querySelectorAll
var div1=document.querySelector('div');
var div1=document.querySelector('.text');
var div1=document.querySelector('div p');
var div1=document.querySelector('div > p');
var div1=document.querySelector('#box');
var div1=document.querySelectorAll('.box')[1];
公司一般不用上边的两种方法:性能不好,不是实时的(最致命的)
var divs=document.querySelectorAll('div');
console.log(divs);//[div,div,div]
divs[0].remove();
console.log(divs);//[div,div,div] 不是实时的
二.遍历节点元素树
(1).节点树
![](https://i-blog.csdnimg.cn/blog_migrate/71a5dae7a2232a201d4b417a9fd79fb8.png)
(2).节点树访问
<ul>
<li>
<h2>我是标题标签</h2>
<a href="">我是超链接标签</a>
<p>我是段落标签</p>
</li>
</ul>
-parentNode:
var a=document.getElementsByTageName('a')[0];
![](https://i-blog.csdnimg.cn/blog_migrate/beb78cf0a9bd477977de9f7908f6cf51.png)
-childNodes:
<ul>
<li>
<!--注释-->
<h2>我是标题标签</h2>
<a href="">我是超链接标签</a>
<p>我是段落标签</p>
</li>
</ul>
var li=document.getElementsByTageName('li')[0];
console.log(li.childNodes.length);//输出9
-firstChild/lastChild
var li=document.getElementsByTageName('li')[0];
console.log(li.lastChild);//#text
-nextSibling/previousSibling
var p=document.getElementsByTageName('p')[0];
console.log(p.previousSibling);//#text
(3).元素树遍历
-parentElement (IE9及以下不支持)
-children (IE7及以下不支持)
childElementCount=children.length(IE9不支持)