关于函数参数的问题

来源:9-11 访问兄弟节点

慕粉3361053

2016-08-20 21:10

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

    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>


其中    function get_nextSibling(n){
        var x=n.nextSibling;
        while (x && x.nodeType!=1){
            x=x.nextSibling;
        }
        return x;
    }

1、代码中没有点击函数,也没有函数调用,为什么要定义一个函数,

2、关于function get_nextSibling(n)定义一个函数get_nextSibling,和参数n 中的参数n是什么,请各位大神通俗讲解,不要复杂,我目前的状况,自认为函数学的还可以,但是在function get_nextSibling(n)加入参数n之后就蒙圈了

写回答 关注

4回答

  • jidashen
    2016-09-14 16:48:43

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

    需求是找指定节点的上一个节点---这个参数n就是要传进去的指定节点,看下边代码

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

    x是获得的一个指定节点 ,把它当做参数传进下边函数
        var y=get_nextSibling(x);

    结果就是:找到一个元素节点  

    函数中的条件(x && x.nodeType!=1 )

    x 保证不是null    

    x.nodeType!=1保证是元素节点




  • 放下那个女孩
    2016-08-26 19:58:47
    1.   var y=get_nextSibling(x);  这个就是调用了,函数会返回一个元素节点。

    2. 参数n就是要处理的元素节点,这个函数的作用就是得到它的下一个紧按着的元素兄弟节点。

  • 慕粉3361053
    2016-08-21 11:01:10

      function get_nextSibling(n){
            var x=n.nextSibling;
            while (x && x.nodeType!=1){
                x=x.nextSibling;
            }
            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>已经是最后一个节点");      
        }


  • 水里有条鱼
    2016-08-20 23:35:38

    var y=get_nextSibling(x); 这里不是调用函数了吗?

    之所以要定义一个函数是为了方便,假如要写的代码很长时,函数如果是一次性的,那么代码会很长很繁琐,假如我把一些特定功能代码写成函数,那就会方便很多,比如这里函数功能是你给出一个节点,它返回下一个相邻的元素节点,一遇到找下一个相邻元素节点就调用,不用重新写了。

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

    var y=get_nextSibling(x);

    function get_nextSibling(n)

    n是什么?我们结合这三句来看首先x是什么呢?x是li数组的第一个,简称第一个li,然后x就被函数调用了,用来赋值给形参n,也就是说现在n也是第一个li了 n=x

    再看 假如 function addn(a,b){ return a+b;}

    var c = addn(4,5);  //a=4,b=5,c=a+b=9 


    水里有条鱼 回复慕粉3361...

    可以放在第一行,局部变量x和 全局变量的x 是两个变量,在函数里,x就是局部变量n.nextSibling,在整个<script>里x就是第一个li。可以这样理解,函数里面的就是一个全新的空间,可以调用全局变量,就像做梦一样,你进入梦里,你的身高跟你现实一样(设为175),你把它改为180,在梦里你是180,但是回到现实你还是175。

    2016-08-21 11:24:24

    共 2 条回复 >

JavaScript进阶篇

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

468190 学习 · 21891 问题

查看课程

相似问题