几个主要节点类型:
ELEMENT_NODE = 1; 元素节点
TEXT_NODE = 3; 文本节点
DOCUMENT_NODE = 9; 文档节点
在IE中会自动过滤掉空白文本节点 elem.previousSibling
在FireFox,Chrome等浏览器中可能会包含空白文本节点 elem.previousSibling --- [object text]
function prev(elem) { //获取当前节点的上一个元素节点
do {
elem = elem.previousSibling;
} while (elem && elem.nodeType != 1);
return elem;
}
function next(elem) { //获取当前节点的下个元素节点
do {
elem = elem.nextSibling;
} while (elem && elem.nodeType != 1);
return elem;
}
function first(elem) { //当前节点的子节点的第一个元素节点
elem = elem.firstChild;
return elem && elem.nodeType != 1 ? next(elem) : elem;
}
function last(elem) { //当前节点的子节点的最后一个元素节点
elem = elem.lastChild;
return elem && elem.nodeType != 1 ? prev(elem) : elem;
}
function parent(elem, num) { //获取祖先元素
num = num || 1;
for (var i = 0; i < num; i++) {
if (elem != null) elem = elem.parentNode;
}
return elem;
}
原文:http://www.cnblogs.com/jikey/archive/2011/07/21/2112470.html