zoukankan      html  css  js  c++  java
  • nextSibling和lastSibling

    在FireFox中包含众多空格作为文本节点,因此在我们使用nextSibling和previousSibling时就会出现问题。因为FireFox会把文本节点误当做元素节点的兄弟节点来处理。我们可以添加nodeType来判断。当上一节点或者是下一节点为文本节点时,就继续寻找,直到找到下一个元素节点。以下代码仅供参考,在fireFox中测试通过:

    复制代码
            //下一个兄弟节点
            function nextSibling(node) {
                var tempLast = node.parentNode.lastChild;
                if (node == tempLast) return null;
                var tempObj = node.nextSibling;
                while (tempObj.nodeType != 1 && tempObj.nextSibling != null) {
                    tempObj = tempObj.nextSibling;
                }
                return (tempObj.nodeType==1)? tempObj:null;
            }
            //前一个兄弟节点
            function prevSibling(node) {
                var tempFirst = node.parentNode.firstChild;
                if (node == tempFirst) return null;
                var tempObj = node.previousSibling;
                while (tempObj.nodeType != 1 && tempObj.previousSibling != null) {
                    tempObj = tempObj.previousSibling;
                }
                return (tempObj.nodeType==1)? tempObj:null;
            }    
    复制代码
    测试代码

    其中nodeType的值主要有以下几种:

    1. 元素节点的nodeType值为1
    2. 属性节点的nodeType值为2
    3. 文本节点的nodeType值为3
  • 相关阅读:
    霍尔逻辑(Floyd-Hoare Logic)
    解决状态空间爆炸的方法简介
    模型检测工具汇总
    模态逻辑
    linux修改apt-get 源
    Vmware宿主机无法复制粘贴内容到虚拟机中
    用tkinter.pack设计复杂界面布局
    什么是跨域,以及解决方案
    python爬虫
    JS中的原型和原型链(图解)
  • 原文地址:https://www.cnblogs.com/lovefan/p/3919696.html
Copyright © 2011-2022 走看看