繁体   English   中英

使用 javascript 替换特定的 html 标签

[英]Replace particular html tags using javascript

我想将每个<li>标记替换为#和每个</li>替换为<br />

我想我需要一个全局替换函数而不是一个简单的string.replace()所以......

var s=obj1.innerHTML;

 s = s.replace(/<li>/g,&quot;# &quot;);
 s = s.replace(/</li>/g,&quot;<br/>&quot;);

但它似乎不起作用。 有什么错误吗?

编辑:我将使用博客中的代码 & 这就是为什么它需要被解析。所以这就是为什么你看到&quot; 而不是"

这样做:-

现场演示

var s="<div>hello world <br/><li>First LI</li><li>Second LI</li></div>";   
s = s.replace(/<li>/g, "#");  
s = s.replace(/<\/li>/g,"<br/>"); 
alert(s);
obj1.innerHTML = obj1.innerHTML.replace(/<li>/g, '#').replace(/<\/li>/g, '<br>');

你只需要躲避//li否则将被视为正则表达式的分隔符。

抱歉,但如果li标签有一些属性(如样式),您将拥有不想要的文本。 对我来说,最简单的方法是使用这样的正则表达式:

var regex = /(<li[^>]+>|<li>|<\/li>)/g;
s = s.replace(regex , ' ');

如果您想删除所有<tags> </tags> (不仅是 li 标签),您应该执行以下操作:

var regex = /(<[^>]+>|<[^>]>|<\/[^>]>)/g;
s =s.replace(regex , ' ');

这工作得很好:

<html>
<head>
    <script type="text/javascript" src="http://streamed.in/static/js/jquery-1.4.1.min.js"></script>
    <script>
    $(document).ready(function(){
        var s = $('#obj1').html();
        s = s.replace(/<li>/g,'#');
        s = s.replace(/<\/li>/g,'<br/>');
        $('#obj1').html(s);
    });
    </script>
</head>
<body id="obj1">
    <li>omg 1</li>
    <li>omg 2</li>
    <li>omg 3</li>
    <li>omg 4</li>
</body>
</html>

或者您可以尝试将第二个替换行替换为:

s.replace(/<\/li>/g,'<br/>');

如果您可以使用 jQuery,这将对您有所帮助:

$("li").after("#<br/>").remove();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM