我在p标签中有一个文本节点说“你好”。我编写了两个函数来搜索特定的字符串,并将文本节点拆分为多个文本节点,每个节点只包含特定的字符串。我在chrome和firefox中都得到了打印到控制台的功能的输出,但是之后ram的使用率在chrome中高达1.5GB并且崩溃了,如果是firefox,它会使用100%的ram迫使我做重启。为什么会这样? 以下是我正在使用的两个函数:
var splitIntoNodes = function(s,v){
var i=0,j=0,nodeText,pos,t; var fNodes = [];
for(i;i<s.length;i++){
if(s[i].nodeName=="#text"){
t = makeNodes(s[i],v);
for(j=0;i<t.length;j++) fNodes.push(t[j]);
} else {
t = splitIntoNodes(s[i].childNodes,v);
for(j=0;i<t.length;j++) fNodes.push(t[j]);
}
}
return fNodes;
}
var makeNodes = function(s,v){
var p = s.nodeValue.search(v),q,r,fNodes = [];
while(p>=0){
q = s.splitText(0,p);
r = s.splitText(0,v.length);
fNodes.push(r);
p = r.nodeValue.search(v);
}
console.log(fNodes);
return fNodes;
}
// usage : splitIntoNodes(document.querySelector("id").childNodes),"a_string");