在Javascript中查找字符串的父元素

在Javascript中查找字符串的父元素,javascript,jquery,Javascript,Jquery,我试图在文档中找到一个特定字符串,该字符串可能会被其他标记(即“这是一个示例””)拆分文本,我希望在更大的文档中找到字符串“这是一个示例”,并返回所属的第一个父元素(在本例中是一个标记) 我编写了一些代码来在任意web文档中查找字符串的索引……希望它能够容纳被拆分的字符串。它返回字符串开始的索引。我想知道如何更有效地执行此操作,或者如果这是一种体面的方式,我想知道,给定$(“body”).html()字符串中字符串的索引,如何检索包含该索引的父元素 编辑:也许这还不清楚。我正在文档中查找字符串的

我试图在文档中找到一个特定字符串,该字符串可能会被其他标记(即“这是一个示例”

”)拆分文本,我希望在更大的文档中找到字符串“这是一个示例”,并返回所属的第一个父元素(在本例中是一个标记)

我编写了一些代码来在任意web文档中查找字符串的索引……希望它能够容纳被拆分的字符串。它返回字符串开始的索引。我想知道如何更有效地执行此操作,或者如果这是一种体面的方式,我想知道,给定$(“body”).html()字符串中字符串的索引,如何检索包含该索引的父元素

编辑:也许这还不清楚。我正在文档中查找字符串的父级,我无法对字符串可能位于何处或其父级可能位于何处的标记做出任何假设。因此,我调用$(“body”).html()并尝试在html“string”中查找子字符串的索引。可能效率很低,我真的非常需要帮助。
function get_string_parent(str) { 
    var p = null;
    var split = str.split(' ');
    var body_html = $("body").html();
    var lower_ind = 0;
    var upper_ind = split.length;
    var STOPPING_LENGTH = 3; //give up after not finding string of length 3... 
    var ind = -1;
    do {  //shrink string until a snippet is found
        ind = body_html.indexOf(split.slice(lower_ind, upper_ind).join(' '));
        upper_ind--;
    }
    while (ind < 0 && upper_ind > STOPPING_LENGTH);
    console.log("FOUND AT INDEX: ", ind);
    //console.log("String around index: ", body_html.slice(ind - 10, ind + 10));
    //I"M UNSURE OF, GIVEN A VALID "IND", how to get the parent element at that index

    return p;
函数get\u string\u parent(str){ var p=null; var split=str.split(“”); var body_html=$(“body”).html(); var下限=0; var upper_ind=拆分长度; var STOPPING_LENGTH=3;//找不到长度为3的字符串后放弃。。。 var ind=-1; 执行{//收缩字符串直到找到代码段 ind=body_html.indexOf(split.slice(lower_ind,upper_ind).join(“”)); 上印度; } 而(ind<0和&upper\u ind>停止长度); log(“在索引处找到:”,ind); //log(“索引周围的字符串:”,body_html.slice(ind-10,ind+10)); //如果给定一个有效的“IND”,我不确定如何在该索引处获取父元素 返回p;
谢谢您的时间,我对webdev不太熟悉,几乎可以肯定我有点不知所措。

为此您需要递归:

function recursivelySearchString(str,from){
    if(from.textContent.indexOf(str)==-1)
        return null // doesn't contain the string, stop

    var children = Array.from(from.children)
    if(children.length>0){
        // current element has children, look deeper
        for(var i=0;i<children.length;i++){
            var found = recursivelySearchString(str, children[i])
            if(found)
                return found
        }
    }

    // none of the children matched, return the parent
    return from
}


他说:“我的工作是在工作中完成的,我的工作是在工作中完成的,我的工作是在工作中完成的。”。

在vero eos和accusam以及justo duo dolores和ea Reum。 斯泰特·克莱塔·卡斯德·古伯格伦(Stet clita kasd gubergren),没有海洋保护区是属于同一领域的。


使用padolsey的工具,并将
替换
选项传递给它,以便它返回您要查找的节点。

这将帮助您开始。您可以使用选择器在html中查找字符串

函数getStringParent(str){ return$(“p:contains(“+str+”)”); } var parent=getStringParent('这是一个示例'); console.log('找到'+parent.length+'项'+'\n'); console.log(父级);


这是一个示例

您试图在文档中查找可能被其他标记拆分的特定字符串“有点不清楚……您也尝试过使用DOMParser吗?字符串的父元素”…字符串没有父元素……事实上,javascript中的字符串与DOMby“字符串的父元素”根本不相关。我的意思是“包含字符串的元素”,我的词汇表可能没有打开-point@RokoC.Buljan “被其他标记分割”意味着字符串OP想要查找可能包含(内联)元素。是的,我也是。更新。我真的很喜欢这个建议,因为我已经在项目的一个单独部分使用findAndReplaceDOMText了!