使用javascript替换特定的html标签

时间:2012-05-30 12:15:28

标签: javascript

我想用<li>&amp;替换每个#标记每个</li><br />

我认为我需要一个全局重复功能,而不是简单的string.replace()所以......

var s=obj1.innerHTML;

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

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

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

5 个答案:

答案 0 :(得分:20)

这样做: -

<强> LIVE DEMO

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);

答案 1 :(得分:6)

obj1.innerHTML = obj1.innerHTML.replace(/<li>/g, '#').replace(/<\/li>/g, '<br>');

您只需要转义/中的/li,否则它将被视为正则表达式分隔符。

答案 2 :(得分:2)

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

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

如果要剥离所有<tags> </tags>(不仅是li标签),应执行以下操作:

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

答案 3 :(得分:0)

这很好用:

<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/>');

答案 4 :(得分:-3)

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

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