先介绍一下节点类型都有哪些:
| 节点类型 | 属性nodeType返回值 |
| 元素节点 | 1 |
| 属性节点 | 2 |
| 文本节点 | 3 |
| 注释节点(comment) | 8 |
| document | 9 |
| DocumentFragment | 11 |
这种遍历可以遍历 文本类节点、注释节点、元素节点等。 任何浏览器都好使。
var strong = document.getElementsByTagName('strong')[0];
console.log(strong.parentNode);
//strong.parentNodes ————div
//strong.parentNode.parentNode ————body
//strong.parentNode.parentNode.parentNode ————html
//strong.parentNode.parentNode.parentNode .parentNode————document
var div = document.getElementsByTagName('div')[0];
console.log(div.childNodes);
var div = document.getElementsByTagName('div')[0];
console.log(div.firstChild);
var div = document.getElementsByTagName('div')[0];
console.log(div.lastChild);
var strong = document.getElementsByTagName('strong')[0];
console.log(strong.nextSibling);
![]()
var strong = document.getElementsByTagName('strong')[0];
console.log(strong.previousSibling);
![]()
遍历元素节点。
除了children以外,其他遍历ie9以下不兼容
var strong = document.getElementsByTagName('strong')[0];
console.log(strong.parentElement);
var div = document.getElementsByTagName('div')[0];
console.log(div.children);
var div = document.getElementsByTagName('div')[0];
console.log(div.children.length);
var div = document.getElementsByTagName('div')[0];
console.log(div.firstElementChild);
var div = document.getElementsByTagName('div')[0];
console.log(div.lastElementChild);
var strong = document.getElementsByTagName('strong')[0];
console.log(strong.nextElementSibling);
console.log(strong.previousElementSibling);
元素的标签名,返回字符串,以大写的形式表示,只读
var strong = document.getElementsByTagName('strong')[0];
console.log(typeof(strong.nodeName) + strong.nodeName);
text节点或Comment节点的文本内容,可读写
该节点类型,只读 (返回以上节点类型后面对应的值)
var strong = document.getElementsByTagName('strong')[0];
console.log(strong.nodeType);
Element节点的属性集合 ,属性值可以改,但属性名不可以改
var div = document.getElementsByTagName('div')[0];
console.log(div.hasChildNodes());
![]()
<注:以上代码只展示了关键代码>