nextSibling和previousSibling

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>nextSibling</title>
</head>
<body>
<ul id="u1">
            <li id="a">javascript</li>
            <li id="b">jquery</li>
            <li id="c">html</li>
        </ul>
        <ul id="u2">
            <li id="d">css3</li>
            <li id="e">php</li>
            <li id="f">java</li>
        </ul>
<script type="text/javascript">
    function get_nextSibling(n){
        var x=n.nextSibling;
        while (x && x.nodeType!=1){
            x=x.nextSibling;
        }
        return x;
    }

    function get_previousSlibling(n){
        var x=n.previousSlibling;
        while(x && x.nodeType!=1){
            x=x.previousSlibling;
        }
        return x;
    }

    var x=document.getElementsByTagName("li")[0];
    document.write(x.nodeName);
    document.write(" = ");
    document.write(x.innerHTML);

    var y=get_nextSibling(x);

    if(y!=null){
        document.write("<br />nextsibling: ");
        document.write(y.nodeName);
        document.write(" = ");
        document.write(y.innerHTML);
    }else{
      document.write("<br>已经是最后一个节点");
    }

</script>
</body>
</html>

1. nextSibling 属性可返回某个节点之后紧跟的节点(处于同一树层级中)。

语法:nodeObject.nextSibling

2.previousSibling 属性可返回某个节点之前紧跟的节点(处于同一树层级中)。

语法:nodeObject.previousSibling

注意: 两个属性获取的是节点。Internet Explorer 会忽略节点间生成的空白文本节点(例如,换行符号),而其它浏览器不会忽略。

解决问题方法:

判断节点nodeType是否为1, 如是为元素节点,跳过。

时间: 2024-11-13 17:11:11

nextSibling和previousSibling的相关文章

js nextSibling属性和previousSibling属性概述及使用注意

1:nextSibling属性 该属性表示当前节点的下一个节点(其后的节点与当前节点同属一个级别):如果其后没有与其同级的节点,则返回null. 需要特别注意的是:该属性在不同的浏览器中的执行结果并不都相同,见下面例示: 先来看一个例子: 该对象的结构表面上看,div的nextSibling只有2项——两个input节点.但实际上有5项——/n,input,/n,input,/n.这是因为input作为创建各种表单输入控件的标签,无论是生成button.checkbox.radio...等或其他

nextSibling和lastSibling

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

JavaScript基础-前端开发

理解作用域 理解作用域链是Js编程中一个必须要具备的,作用域决定了变量和函数有权力访问哪些数据.在Web浏览器中,全局执行环境是window对象,这也意味着所有的全局变量或者方法都是window对象的属性或方法.当一个函数在被调用的时候都会创建自己的执行环境,而这个函数中所写的代码就开始进入这个函数的执行环境,于是由变量对象构建起了一个作用域链. var wow = '魔兽世界'; var message = function(){ var _wow = '123'; } 在这个例子中全局环境中

高性能JS-DOM

用脚本进行DOM操作的代价是很昂贵的,它是富web应用中最常见的性能瓶颈.主要有以下三种问题: 访问和修改DOM元素 修改DOM元素的样式导致repaint和reflow 通过DOM事件处理与用户进行交互 浏览器中的DOM DOM是(Document Object Model)一个与语言无关的.用来操作XML和HTML文档的应用程序接口(Application Program Interface). 尽管DOM与语言无关,但是在浏览器中的接口却是用JavaScript来实现的. 一个前端小知识

《JavaScript高级程序设计》第12-13章

第十二章 DOM2和DOM3 1.DOM2和DOM3模块 DOM2级核心:在1级核心的基础上构建,为节点添加了更多的方法和属性 DOM2级视图:为文档定义了基于样式信息的不同视图 DOM2级事件:说明了如何使用事件和DOM文档交互 DOM2级样式:定义了如何以编程方式来访问和改变CSS样式信息 DOM2级遍历和范围:引入了遍历DOM文档和选择其特定部分的新接口 DOM2级HTML:在1级HTML基础上创建,添加了更多属性.方法和新接口 DOM3级XPath模块: DOM3级加载与保存模块 2.D

BeautifulSoup基础

MarkdownPad Document BeautifulSoup findAll函数 nameList = bsObj.findAll("span", {"class":"green"}) for name in namelist:     print(name.get_text()) #找到所有属性class="green"的span标签,通常在你准备打印.存储和操作数据时,应该最后才使 用 .get_text() .一

DOM (JavaScript学习笔记)

DOM是针对HTML和XML文档的一个API(应用程序接口). IE中所有DOM对象都是以COM对象的形式实现的,所以IE中的DOM对象与原生JavaScript对象的行为或活动特点不一致,这个要注意. 1.节点层次 文档节点是每个文档的根节点.<html>元素是根节点的子节点,成为文档元素.文档元素是文档的最外层元素.每个文档只能有一个文档元素. 1.1Node类型 NODE.ELEMENT_NODE(1) NODE.ATTRIBUTE_NODE(2) NODE.TEXT_NODE(3) N

js遍历

NodeIterator 比较简单的迭代器 创建 document.createNodeIterator(root,   whatToShow,   filter  ,  false ) root根节点    whatToShow表示要访问哪些结点代码,通常是NodeFilter.SHOW_ELEMENT filter过滤器,有两种表示方法,一个对象或者一个函数,后面的false不用理 var filter={ acceptNode:function (node) {//只能有这个函数 retu

节点小结

childNodes  包括文本节点 节点分成三类:标签  属性和文本 节点的类型   nodeType 1.元素的节点 2.属性节点 3.文本节点 节点的名字   nodeName 元素节点:标签名称 属性节点:属性名称 文本节点:#text 节点值   nodeValue 元素节点的nodevalue始终是null 属性的nodeValue的属性值 如果是文本返回的文本的内容 兄弟(姐妹)节点 下一个兄弟(姐妹)节点: nextSibling:下一个紧邻节点,谷歌.火狐都支持,只不过有可能会