//获取指定元素的前一个元素节点兼容性写法 function getPreviousElement(element) { if (element.previousElementSibling !== undefined) { return element.previousElementSibling; } else { var prev = element.previousSibling; //存在前面的节点,而且那个节点不是元素节点 while (prev && prev.nodeType != 1) { //继续往前 prev = prev.previousSibling; } return prev; } } //获取指定元素的后一个元素节点兼容性写法 function getNextElement(element) { if (element.nextElementSibling !== undefined) { return element.nextElementSibling; } else { var next = element.nextSibling; //存在后面的节点,而且那个节点不是元素节点 while (next && next.nodeType != 1) { //继续往后 next = next.nextSibling; } return next; } }
FF等符合W3C的现代浏览器与IE(6-8)对操作节点方面的区别在于对文本节点这一块.DOM节点按照分类可以分为元素节点,属性节点,文本节点,文档节点等。IE(6-8)会忽略掉空白的文本节点,而其他当代浏览器不同。
previousSibling和nextSibling在IE下会过滤掉空白的文本节点,但不会过滤不空白的文本节点;而在FF等浏览器下则不会过滤,为了方便c操作,可以使用previousElementSibling和nextElementSibling