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

这段代码的运行结果为什么是undefined

这段代码的运行结果为什么是undefined

繁星coding 2019-03-14 17:15:03
<!DOCTYPE html><html dir="ltr">  <head>    <meta charset="utf-8">    <title></title>  </head>  <body>    <div class="name">      <div class="">        <span>          <img src="" alt="">        </span>      </div>    </div>  </body>  <script type="text/javascript">    function getNum(ele,box,num){      var num = num ? num : 1;      if(ele.parentNode == box){        return num;// num = 4      }else{        num++;        getNum(ele.parentNode,box,num);      }    }    var a = document.getElementsByTagName("img")[0];    var b = document.getElementsByTagName("body")[0];    var c = getNum(a,b);    console.log(c);  </script></html>
查看完整描述

3 回答

?
UYOU

TA贡献1878条经验 获得超4个赞

function getNum(ele,box,num){

        var num = num ? num : 1;

        if(ele.parentNode == box){

            return num;// num = 4

        }else{

            num++;

            return getNum(ele.parentNode,box,num);

        }

    }

    var a = document.getElementsByTagName("img")[0];

    var b = document.getElementsByTagName("body")[0];

    var c = getNum(a,b);

    console.log(c);

不符合条件的话没return出去东西啊


查看完整回答
反对 回复 2019-03-23
?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

你else也要return getNum
另外 var num = num ? num : 1 最好写成 function(ele,box,num = 1){}

查看完整回答
反对 回复 2019-03-23
?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

<script>

//假设elem是target的意向父元素

function getParentOfBodyNum( elem, target, num ) {

    var num = num ? num : 1;

    if ( elem.parentNode == target ) {

        document.write( "一共查找" + num + "次");//在html中,如果单单return num,并没有可见结果

    } else {

        num ++;

        return getParentOfBodyNum( elem.parentNode, target, num );

    }

}

var image = document.getElementsByTagName( "img" )[ 0 ];

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

getParentOfBodyNum( image, body );

</script>


查看完整回答
反对 回复 2019-03-23
  • 3 回答
  • 0 关注
  • 500 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信