小卒n啊O 发表于 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");
    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是被调用了一次的,为什么第二次就不行了?

黑熊怪 发表于 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

falost 发表于 2016-4-1 13:25:11

刚吃饭回来
正如楼上所言 ,你单词拼错了 这样 永远得到的都是undefined在undefined 和 null 做比较的时候,他们是==的

黑熊怪 发表于 2016-4-1 13:32:29

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

你为啥今天不夸我了~好桑心~

小卒n啊O 发表于 2016-4-1 14:10:35

黑熊怪 发表于 2016-4-1 12:33
function get_priousSibling(n){
         var x=n.priousSibling;
         while(x && x.nodeType!=1){


想了我两天半,以为我逻辑混乱了,最后居然是这样....我好蛋疼....

小卒n啊O 发表于 2016-4-1 14:11:51

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

我一直以为是我逻辑乱了,或者JS不能这样用......没往单词拼错方面想。。。。看来对自己的逻辑能力不够自信啊。。。

黑熊怪 发表于 2016-4-1 14:29:55

你可以把var xxx=xxx写在前面,把函数写在后面,在js读代码的时候会先提取函数声明,那样写的话代码更好看也更好理解。
var x=xxx,y=getxxx(),z=getXXXX();   function getxxx(){}function getXXXX(){}
其实当我第一眼看到你代码的时候我是拒绝的。。。差点以为看不懂。。。

小卒n啊O 发表于 2016-4-1 14:59:11

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

OK,学习了
页: [1]
查看完整版本: 有段程序的逻辑搞不明白,求教