Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.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 使用regex替换外部span标记_Javascript_Regex - Fatal编程技术网

Javascript 使用regex替换外部span标记

Javascript 使用regex替换外部span标记,javascript,regex,Javascript,Regex,使用javascript替换方法,我希望找到以下字符串: <span class="memberX"><span class="member19">text</span></span> <---X is any number text如果这是在DOM中,则不需要正则表达式。您应该只操纵DOM本身 var spans = document.querySelectorAll('span[class^=member] > span[c

使用javascript替换方法,我希望找到以下字符串:

<span class="memberX"><span class="member19">text</span></span>    <---X is any number

text如果这是在DOM中,则不需要正则表达式。您应该只操纵DOM本身

var spans = document.querySelectorAll('span[class^=member] > span[class^=member]');

for (var i = 0; i < spans.length; i++) {
    spans[i].parentNode.parentNode.insertBefore(spans[i], spans[i].parentNode);
    spans[i].parentNode.removeChild(spans[i].nextSibling);
}
var span=document.querySelectorAll('span[class^=member]>span[class^=member]');
对于(变量i=0;i
  • 先读

  • 阅读文档对象模型(简写为DOM)

  • 使用JS提供的DOM函数遍历DOM树

  • 编写遍历DOM树的遍历算法

  • 对于您遇到的每个
    span
    元素,检查它是否有一个子元素,该子元素也是span。如果是这种情况,如果适合您的情况,您应该将父
    span
    替换为子
    span


  • 你的意思是你有一个包含html的输入字符串,其中包含特定文本,还是你想在当前页面上找到这些元素?使用DOM操纵函数,而不是正则表达式。+1/me建议DOM漫游,其他回答者附带
    querySelectorAll
    ,让人大吃一惊D+1。在看到您的答案之前,我在想使用jQuery和您使用的选择器有多容易:
    ​$('span[类]​​​​​​​​​​​​^=“成员​​​​​​​​"] > span[class^=“member”]').unwrap();
    .Nice answer.nnnnnn,我喜欢你的答案。一个问题,如果我不是直接操作DOM而是在变量中传递一块HTML内容,我将如何实现这一点?然后我必须操作变量并将新值设置为自身?@Chad:
    var div=document.createElement(“div”);div.innerHTML=myhtml;
    然后使用
    div
    作为根目录,而不是
    文档
    var spans = document.querySelectorAll('span[class^=member] > span[class^=member]');
    
    for (var i = 0; i < spans.length; i++) {
        spans[i].parentNode.parentNode.insertBefore(spans[i], spans[i].parentNode);
        spans[i].parentNode.removeChild(spans[i].nextSibling);
    }