问答详情
源自:9-11 访问兄弟节点

previousSibling返回值问题

把第一段返回节点之后的节点的代码var x=document.getElementsByTagName("li")[0];  中的[0]改为[5],则打印出“已是最后一行,”和“已是第一行”。但把第二段返回节点之前的代码var h=document.getElementsByTagName("li")[5]; 中的[5]改为[0]则不会提示,而是返回值有些改变。不知是为什么?

提问者:天山之路 2016-03-13 12:07

个回答

  • annmi_cai
    2016-03-13 15:01:43
    已采纳

    不太明白你说的意思。

    var x=document.getElementsByTagName("li")[0];找出第一个li,改成(5)则找第6个li。

    你说的打印’已是最后一行‘和’已是第一行‘,具体代码什么。

    首先,得看下你做的例子,一般来说,数据组的下标值不能超过li的个数,如果超过,则返回null;

    比如<li>1</li><li>2</li>,如果document.getElementsByTagName("li")[下标];如果小标大于等于2,则返回值为空。

    具体你可以看看previousSibling和nextSibling的用法

  • 天山之路
    2016-03-13 16:07:55

    给你看下源代码就明白了。

    <!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_previousSibling(p){

            var h = p.previousSibling;

            while(h && h.nodeType!=1){

                h = h.previousSibling;

            }

            return h;

        }

        

        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>已经是最后一个节点");      

        }

        

        var h = document.getElementsByTagName("li")[5];

        document.write("<br />" + "<br />" + h.nodeName);

        document.write(" = ");

        document.write(h.innerHTML);

        

        var i = get_previousSibling(h);

        

        if (y!=null){

            document.write("<br />previousSibling:");

            document.write(i.nodeName);

            document.write("=");

            document.write(i.innerHTML);

            }else{

                document.write("<br />已经是第一个节点");

            }

    </script>

    </body>

    </html>