2012-03-23 88 views
2

我有一个从这样看另一个进程回来一些HTML:如何通过Javascript消除冗余,重复的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!

+0

什么wysiwyg它出来? – Shad 2012-03-23 23:12:48

回答

-1

你应该修复这个在源代码和CSS类非JavaScript。

+0

你将如何使用CSS从DOM中删除DOM节点/元素? CSS只能修改表示,它*不能*改变页面的底层结构。 – 2012-03-23 23:01:04

+0

最好的解决方案显然是将它从其他获取HTML的进程中解决。我没有看到javascript是这个问题的一个非常可行的解决方案。您将要下载所有这些冗余标签,然后让客户端负载组织数据并删除无用标签?你不应该像这样使用内联CSS,或者使用额外的标签,像。大声笑,解决这个问题的任何建议的方法,不解决问题的来源似乎对我来说是荒谬的。 – 2012-03-23 23:15:35

+1

我不知道为什么这是得到downvoted。他是对的 - 你可以'修复'这个问题,但修复非常糟糕的代码将是一件坏事。适当的长期解决方案是首先修改为您提供HTML的任何内容,以免给您这样的废弃代码。如果它来自像我半疑似的所见即所得,那么也许看看其他的所见即所得,直到你找到一个适合你的需求。 – kingcoyote 2012-03-24 00:07:33

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

//你必须非常肯定的来源:

//(字符串中的线被打破了发帖)

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 i psum测试 dolor sit amet