Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用新HTML替换childNodes textNodes(url替换器)_Javascript_Html_Replace_Removechild - Fatal编程技术网

Javascript 用新HTML替换childNodes textNodes(url替换器)

Javascript 用新HTML替换childNodes textNodes(url替换器),javascript,html,replace,removechild,Javascript,Html,Replace,Removechild,我需要一些小的和紧凑的,所以我一直在做这样的试验,我有一些工作轻微,只是出于某种原因,它实际上没有附加新的html var a = document.querySelectorAll('.post .content div'); var b = a[7].childNodes; for(i=0;i<b.length;i++){ var exp = /(\b(https?|ftp|file):\/\/[\-A-Z0-9+&@#\/%?=~_|!:,.;]*[\-A-Z0-9

我需要一些小的和紧凑的,所以我一直在做这样的试验,我有一些工作轻微,只是出于某种原因,它实际上没有附加新的html

 var a = document.querySelectorAll('.post .content div');
 var b = a[7].childNodes;
 for(i=0;i<b.length;i++){
  var exp = /(\b(https?|ftp|file):\/\/[\-A-Z0-9+&@#\/%?=~_|!:,.;]*[\-A-Z0-9+&@#\/%=~_|])/ig;
   if(b[i].nodeType === 3){
     var ahref = document.createElement('a');
         ahref.className="easyBBurlFetch";
         ahref.href=b[i].nodeValue.replace(exp,'$1');
         ahref.innerText=b[i].nodeValue.replace(exp,'$1');
     b[i].parentNode.insertBefore(ahref,b[i]);
     b[i].parentNode.removeChild(b[i]);
    }
  }
var a=document.querySelectorAll('.post.content div');
var b=a[7]。子节点;

对于(i=0;i请尝试将最后一行更改为
b[i].parentNode.removeChild(b[i].nextSibling);
,因为在当前一行中,您正在删除在上一步中添加的相同元素。原因是,childNodes返回live collection,而当您向同一parentNode添加元素时,您的元素@b[i]不是文本节点,而是您刚才添加的锚点。此外,在处理live collection缓存时,请注意前面的长度:

 var a = document.querySelectorAll('.post .content div');
 var b = a[0].childNodes;

 for(i=0, l=b.length;i<l;i++){ //Cache the length here in variable l
  var exp = /(\b(https?|ftp|file):\/\/[\-A-Z0-9+&@#\/%?=~_|!:,.;]*[\-A-Z0-9+&@#\/%=~_|])/ig;
   if(b[i].nodeType === 3){
      ...........
     b[i].parentNode.insertBefore(ahref,b[i]);
     b[i].parentNode.removeChild(b[i].nextSibling); //remove the next element to the added element
     //Or
     //b[i].parentNode.removeChild(b[i+1]);
    }
  }
var a=document.querySelectorAll('.post.content div');
var b=a[0]。子节点;

对于(i=0,l=b.length;iAhh这很有意义,还有漂亮的帽子,顺便说一句lol…测试并正常工作!非常感谢PSLHey PSL我如何防止这种情况发生:
url.com/vi/7cmqVQaWQiw%20这是%20这是%20将要%20到%20更多%20文本%20到%20尝试%20这%20编码%20输出
第一个%20之后是。。。