我有一些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 :(得分:-1)
怎么样
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