WEB前端开发人员交流社区

搜索
查看: 1149|回复: 7

有段程序的逻辑搞不明白,求教

[复制链接]

2

主题

11

帖子

6

积分

前端入门

Rank: 1

积分
6

社区QQ达人

发表于 2016-4-1 11:47: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_priousSibling(n){
        var x=n.priousSibling;
        while(x && x.nodeType!=1){
            x=x.priousSibling;
        }
        return x;
    }
    var x=document.getElementsByTagName("li")[1];
    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 z=get_priousSibling(x);

    if(z!=null){
        document.write("<br/>priousSibling:");
        document.write(z.nodeName);
        document.write(" = ");
        document.write(z.innerHTML);}
        else{
            document.write("<br>已经是第一个节点")
    }
</script>
</body>
</html>

这段程序运行结果,最后一个结果一直是         已经是第一个节点      这说明Z=NULL,对不对?
如果对,为什么变量X只被调用了一次?这段程序的错误出在哪里?我一直理不清这段程序的逻辑,第一个结果可以正常显示,说明变量X是被调用了一次的,为什么第二次就不行了?

WEB前端开发人员共同的技术交流平台,提倡开源、安全、自由、共享的网络精神! —— —— www.fedte.cn
回复

使用道具 举报

1

主题

8

帖子

4

积分

前端入门

Rank: 1

积分
4

社区QQ达人

发表于 2016-4-1 12:33:33 | 显示全部楼层
function get_priousSibling(n){
         var x=n.priousSibling;
         while(x && x.nodeType!=1){
             x=x.priousSibling;
         }
         return x;
     }
骚年,你单词拼错了。。。priousSibling;            previousSibling

评分

参与人数 1金钱 +4 收起 理由
falost + 4 乐于助人

查看全部评分

WEB前端开发人员共同的技术交流平台,提倡开源、安全、自由、共享的网络精神! —— —— www.fedte.cn
回复 支持 反对

使用道具 举报

94

主题

150

帖子

148

积分

管理员

会在前端的道路上一直走下去!

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

积分
148

社区QQ达人

发表于 2016-4-1 13:25:11 | 显示全部楼层
刚吃饭回来
正如楼上所言 ,你单词拼错了 这样 永远得到的都是  undefined  在undefined 和 null 做比较的时候,他们是==的
WEB前端开发人员共同的技术交流平台,提倡开源、安全、自由、共享的网络精神! —— —— www.fedte.cn
回复 支持 反对

使用道具 举报

1

主题

8

帖子

4

积分

前端入门

Rank: 1

积分
4

社区QQ达人

发表于 2016-4-1 13:32:29 | 显示全部楼层
falost 发表于 2016-4-1 13:25
刚吃饭回来
正如楼上所言 ,你单词拼错了 这样 永远得到的都是  undefined  在undefined 和 null 做比较的 ...

你为啥今天不夸我了~好桑心~
WEB前端开发人员共同的技术交流平台,提倡开源、安全、自由、共享的网络精神! —— —— www.fedte.cn
回复 支持 反对

使用道具 举报

2

主题

11

帖子

6

积分

前端入门

Rank: 1

积分
6

社区QQ达人

 楼主| 发表于 2016-4-1 14:10:35 | 显示全部楼层
黑熊怪 发表于 2016-4-1 12:33
function get_priousSibling(n){
         var x=n.priousSibling;
         while(x && x.nodeType!=1){

想了我两天半,以为我逻辑混乱了,最后居然是这样....我好蛋疼....
WEB前端开发人员共同的技术交流平台,提倡开源、安全、自由、共享的网络精神! —— —— www.fedte.cn
回复 支持 反对

使用道具 举报

2

主题

11

帖子

6

积分

前端入门

Rank: 1

积分
6

社区QQ达人

 楼主| 发表于 2016-4-1 14:11:51 | 显示全部楼层
falost 发表于 2016-4-1 13:25
刚吃饭回来
正如楼上所言 ,你单词拼错了 这样 永远得到的都是  undefined  在undefined 和 null 做比较的 ...

我一直以为是我逻辑乱了,或者JS不能这样用......没往单词拼错方面想。。。。看来对自己的逻辑能力不够自信啊。。。
WEB前端开发人员共同的技术交流平台,提倡开源、安全、自由、共享的网络精神! —— —— www.fedte.cn
回复 支持 反对

使用道具 举报

1

主题

8

帖子

4

积分

前端入门

Rank: 1

积分
4

社区QQ达人

发表于 2016-4-1 14:29:55 | 显示全部楼层
你可以把var xxx=xxx写在前面,把函数写在后面,在js读代码的时候会先提取函数声明,那样写的话代码更好看也更好理解。
var x=xxx,y=getxxx(),z=getXXXX();   function getxxx(){}  function getXXXX(){}  
其实当我第一眼看到你代码的时候我是拒绝的。。。差点以为看不懂。。。
WEB前端开发人员共同的技术交流平台,提倡开源、安全、自由、共享的网络精神! —— —— www.fedte.cn
回复 支持 反对

使用道具 举报

2

主题

11

帖子

6

积分

前端入门

Rank: 1

积分
6

社区QQ达人

 楼主| 发表于 2016-4-1 14:59:11 | 显示全部楼层
黑熊怪 发表于 2016-4-1 14:29
你可以把var xxx=xxx写在前面,把函数写在后面,在js读代码的时候会先提取函数声明,那样写的话代码更好看 ...

OK,学习了
WEB前端开发人员共同的技术交流平台,提倡开源、安全、自由、共享的网络精神! —— —— www.fedte.cn
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



Archiver|手机版|小黑屋|前端开发技术交流

Copyright © 2009-2015 前端开发技术交流 http://www.fedte.cn 版权所有 All Rights Reserved.

免责声明: 本社区不承担任何由社区会员所提供的信息和工具所引起的争议和法律责任。

GMT+8, 2020-9-21 15:31

快速回复 返回顶部 返回列表