如何通过Javascript消除多余的重复HTML标记?

时间:2012-03-23 22:45:37

标签: javascript html

我有一些HTML从另一个进程返回,如下所示:

Lorem <i style="color:blue;">
<strong>ipsum</strong>
</i>
<i style="color:blue;">
<strong> </strong></i>
<i style="color:blue;">
<strong>test</strong>
</i> dolor sit amet

请注意,基本上每个元素(一个单词,一组标点符号或一组空格构成一个“元素”)都有自己的一组相同的标签。我试图在Javascript中找到一种简化它的方法:

    Lorem <i style='color:blue;'>
<strong>ipsum test</strong></i>
 dolor sit amet

它似乎既简单又复杂。我的大脑在一整天的电源编码中被炒掉了,所以我没有想出任何有创意的解决方案。

Superthanks!

2 个答案:

答案 0 :(得分:-1)

怎么样

DEMO

var str = 'Lorem <i style="color:blue;"><strong>ipsum</strong></i><i style="color:blue;"><strong> </strong></i><i style="color:blue;"><strong>test</strong></i> dolor sit amet'
var d = document.createElement('div');

d.innerHTML= str;
var italics = d.getElementsByTagName('i');

var text  = str.substring(0,str.indexOf('<i'))
text += '<i style="color:blue;"><strong>';

for (var i=0;i<italics.length;i++) {
  text += italics[i].textContent;
}
text += '</strong></i>';
text += str.substring(str.lastIndexOf('>')+1);
    console.log(text)
document.getElementById('content').innerHTML=text;

答案 1 :(得分:-1)

//你必须非常确定来源:

//(字符串中的行被打破以便发布)

var s= 'Lorem <i style="color:blue;"><strong>ipsum</strong></i>'+
'<i style="color:blue;"><strong> </strong></i><i style="color:blue;">'+
'<strong>test</strong></i> dolor sit amet';

s= s.replace(/<\/strong>\s*<\/i>\s*<i[^>]+>\s*<strong>/g, '');



//  returned value: (String)
Lorem <i style="color:blue;"><strong>ipsum test</strong></i> dolor sit amet

HTML: Lorem ipsum测试 dolor sit amet