为了账号安全,请及时绑定邮箱和手机立即绑定

previousSibling返回值问题

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

正在回答

2 回答

不太明白你说的意思。

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

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

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

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

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

0 回复 有任何疑惑可以回复我~

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

<!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>


0 回复 有任何疑惑可以回复我~
#1

Millerwang47

if (y!=null){ //这不应该还是y了吧.... document.write("<br />previousSibling:"); document.write(i.nodeName); document.write("="); document.write(i.innerHTML); }else{ document.write("<br />已经是第一个节点"); }
2016-07-19 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
JavaScript进阶篇
  • 参与学习       468189    人
  • 解答问题       21891    个

本课程从如何插入JS代码开始,带您进入网页动态交互世界

进入课程

previousSibling返回值问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信