chaihongjun.me

DOM节点获取指定元素的前一个和后一个元素的兼容性写法

//获取指定元素的前一个元素节点兼容性写法
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

知识共享许可协议本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。作者:chaihongjun»

相关推荐