如何递归搜索所有parentNodes

Sha*_*s88 22 html javascript dom

我想知道,如何递归地找出元素的所有父节点.假设我有以下代码段

<a href="#"><font>Hello</font></a>

在这里我想知道font标签的父节点是否是锚标签.现在可以通过简单地检查.parentNode属性来实现.但是,如果有以下情况,如果,

<a href="#"><font><b>Hello<b></font></a>

要么

<a href="#"><font><b><u>Hello</u><b></font></a>

所以,基本上,如何知道我们是否已达到最顶级的父节点?

Jir*_*riz 40

您可以从元素遍历到根,查找所需的标记:

function findUpTag(el, tag) {
    while (el.parentNode) {
        el = el.parentNode;
        if (el.tagName === tag)
            return el;
    }
    return null;
}
Run Code Online (Sandbox Code Playgroud)

您可以使用start元素调用此方法:

var el = document.getElementById("...");  // start element
var a = findUpTag(el, "A");   // search <a ...>
if (a) console.log(a.id);
Run Code Online (Sandbox Code Playgroud)

  • 这里没有递归!只是一个迭代循环. (15认同)
  • 答对了.递归,递归,递归. (2认同)