【问题标题】:Javascript String Replace span element by empty stringJavascript字符串用空字符串替换span元素
【发布时间】:2017-03-23 13:50:52
【问题描述】:

我在 JS 中有 HTML 字符串,我想从中删除 span 元素。

var HTML= '<div>test</div><p>test</p><span class="removedata">X</span><span>test</span><span class="removedata">X</span>';

删除 Span 后,应该是这样的:

HTML= '<div>test</div><p>test</p><span>test</span>';

我试过下面的JavaScript操作但是不行,

HTML = HTML.replace('/<span class="removedata">X</span>/g',"");                                                                                                                                                               

任何输入?

【问题讨论】:

标签: javascript jquery


【解决方案1】:

斜线/regular expressions中的一个特殊字符,你需要将它转义\/

var html = '<div>test</div><p>test</p><span class="removedata">X</span><span>test</span><span class="removedata">X</span>';
var newHtml = html.replace(/<span class="removedata">X<\/span>/g, '');

console.log(newHtml); // "<div>test</div><p>test</p><span>test</span>"

【讨论】:

    【解决方案2】:

    您可以尝试使用RegExp

    var str = '<div>test</div><p>test</p><span class="removedata">X</span><span>test</span><span class="removedata">X</span>',
        str2 = str.replace(/<span class="removedata">X<\/span>/g, '');
        console.log(str2);

    【讨论】:

      【解决方案3】:

      如果你坚持使用正则表达式,你可以

      HTML = HTML.replace(/<\/?span class="removedata".[^>]*>/g, '');
      

      【讨论】:

      • 这不起作用。我不需要删除所有跨度,而是使用类 removedata 进行跨度。
      【解决方案4】:

      var HTML= '<div>test</div><p>test</p><span class="removedata">X</span><span>test</span><span class="removedata">X</span>';
      
      var htmlObj = $(HTML);
      htmlObj = htmlObj.not(".removedata");
      
      var htmlString = $('<div>').append(htmlObj).html();
      console.log(htmlString);
      &lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"&gt;&lt;/script&gt;

      【讨论】:

        【解决方案5】:

        您可以替换文本,但也可以使用不同的方法:

        在某些时候,您正在将 HTML 的内容添加到 DOM 树中。完成后,您还可以通过执行以下操作来实现“移除”:

        var elements = document.getElementsByClassName("removedata");
        elements[0].parentNode.removeChild(elements[0]);
        

        【讨论】:

          【解决方案6】:

          以下可以工作。

          var html = '<div>test</div><p>test</p><span class="removedata">X</span><span>test</span><span class="removedata">X</span>';
          html = html.replace(/<span class="removedata">X<\/span>/g, '');
          console.log(html);
          

          如果您不熟悉正则表达式,可以使用以下网站。

          https://regex101.com/

          【讨论】:

            猜你喜欢
            • 2022-11-14
            • 1970-01-01
            • 2011-05-31
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-11-12
            • 2012-08-09
            相关资源
            最近更新 更多