js原生递归猎取一个节点的一切父级节点

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <div class="a">
      一级
      <div class="b">
        二级
        <div class="c">
          三级
          <div id="start" class="">
            目的
          </div>
        </div>
      </div>
    </div>
  </body>
  <script type="text/javascript">

    let startTag = document.querySelector('#start')

    /**
     * getParentTag - 猎取传入标签的一切父级标签
     *
     * @param  { HTMLElement } startTag 初始dom节点
     * @param  {Array} parentTagList 初始dom节点的一切父级节点
     * @return {type} 递归/初始dom节点的一切父级节点
     */
    function getParentTag(startTag, parentTagList = []) {
      // 传入标签是不是是DOM对象
      if (!(startTag instanceof HTMLElement)) return console.error('receive only HTMLElement');
      // 父级标签是不是是body,是着住手返回鸠合,反之继承
      if ('BODY' !== startTag.parentElement.nodeName) {
        // 放入鸠合
        parentTagList.push(startTag.parentElement)
        // 再上一层寻觅
        return getParentTag(startTag.parentElement, parentTagList)
      }
      // 返回鸠合,完毕
      else return parentTagList;

    }

    console.log(getParentTag(startTag));
  </script>
</html>
    原文作者:茶树菇小学生
    原文地址: https://segmentfault.com/a/1190000017162973
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞