使用JavaScript查找innerHTML文本并返回父标记ID

使用JavaScript查找innerHTML文本并返回父标记ID,javascript,html,dom,Javascript,Html,Dom,对于JavaScript,人们通常希望使用例如getElementById函数来搜索具有特定ID的HTML标记,并返回其innerHTML值 然而,有可能实现相反的效果吗 <tag1 id="myID1"> <tag2 id="myID2"> <tag3>myText</tag3> </tag2> </tag1> 我想创建一个函数,该函数将查找myText作为innerHTML文本的第一次出

对于JavaScript,人们通常希望使用例如getElementById函数来搜索具有特定ID的HTML标记,并返回其innerHTML值

然而,有可能实现相反的效果吗

<tag1 id="myID1">
    <tag2 id="myID2">
        <tag3>myText</tag3>
    </tag2>
</tag1>

我想创建一个函数,该函数将查找myText作为innerHTML文本的第一次出现,并返回其最上面的父标记id。在这种情况下,如果搜索myText,我希望返回myID1。JavaScript如何实现这一点?

要扫描html元素的子元素,可以使用递归函数,如:

function findInnerHTMLMatch(s,e){
  if (e.innerHTML===s) return e;
  for (let n=0;n<e.children.length;n++){
    const rtn=findInnerHTMLMatch(s,e.children[n]);
    if (rtn) return rtn;
  }
} 

首先遍历循环中的所有元素,检查innerhtml。然后遍历已找到元素的父元素,直到找到所需的父元素。这也可能有助于开始@CertainPerformance OP询问是否存在方法并提供指导。我认为他们不需要做更多的事情,只需要努力发布问题。不存在这样的内置方法,因此他应该从尝试编写这样一个函数开始,而不是问这样的问题来为他解决问题。您的解决方案需要一些修复,以便与Internet Explorer var兼容,而不是与const和let兼容-但它是有效的!
function findInnerHTMLMatch(s,e){
  const stack=[e];
  while (stack.length){
    const el=stack.pop();
    if (el.innerHTML===s) return el;
    stack.push(...el.children);
  }
}