[英]Use JavaScript to find innerHTML text and return parent tag ID
使用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;
}
}
然后,如果要在整個頁面上查找,只需調用findInnerHTMLMatch('myText',document.body)
。
這將返回僅包含您指定的文本的DOM元素。
之后,我發現您的要求不清楚。 如果您正在尋找最終的父元素,那么從邏輯上講,您每次都會以<html>
元素結束。 那么,您是否在定義了id
的頂部元素之后? 如果不是,那么,也許最重要的是,因為這將有助於澄清事情,為什么?
只是因為我喜歡考慮這些事情...如果您想不進行遞歸操作,則堆棧可以很好地工作,並且可能更加優雅:
function findInnerHTMLMatch(s,e){
const stack=[e];
while (stack.length){
const el=stack.pop();
if (el.innerHTML===s) return el;
stack.push(...el.children);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.