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

关于函数参数的问题

<!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之后就蒙圈了

正在回答

5 回答

    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保证是元素节点




0 回复 有任何疑惑可以回复我~
  1.   var y=get_nextSibling(x);  这个就是调用了,函数会返回一个元素节点。

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

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

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


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

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 


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

慕粉3361053 提问者

函数里的局部变量x和 全局变量的x 是两个变量么, 还有可以把    var x=document.getElementsByTagName("li")[0]放在<script>下的第一行么,如果不可以的话,    var x=document.getElementsByTagName("li")[0]; 这个全局变量不包含函数把,代码在下面
2016-08-21 回复 有任何疑惑可以回复我~
#2

水里有条鱼 回复 慕粉3361053 提问者

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

举报

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

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

进入课程

关于函数参数的问题

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