首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Javascript -在CMS格式的内容Pt中替换标记。二、

Javascript -在CMS格式的内容Pt中替换标记。二、
EN

Stack Overflow用户
提问于 2012-04-13 16:26:00
回答 1查看 62关注 0票数 0

我正在处理一个CMS,它格式化如下所示的文本块:

<p id="V01-cntntTxt">Lorem ipsum dolor,consectetur adipiscing elit.<br>Vivamus,semper at eu,facilisis lectus.[医]前庭和大前庭,<br>,odio,semper lacinia congue orci.野黄花(<br>turpis bibendum .<br><br>Morbi interdum et nisl ullamcorper )与黄花(<br> lorem tempus. )Duis nec nisi quis ipsum pulvinar体马来铁线莲, [医]癌前二次试验[医][医]</p>.

使用此CMS的公司已经将使用SHIFT+Enter x 2表示段落中断,并使用单个Shift+Enter作为换行作为标准做法。我不能修补或改变CMS的工作方式。

这是预期的结果:

<p id="V01-cntntTxt">Lorem ipsum dolor,<p id="V01-cntntTxt">Lorem ipsum dolor,consectetur adipiscing elit.[医][医][[医]][医][[ at ]][[at]][[at]]:[医][医][[at]][[at]][[at]]。[医]前庭和大前庭,双侧前庭,前庭,大前庭,双侧前庭,大前庭,前庭和大前庭。</p><p>Morbi interdum et nisl ullamcorper .Duis nec nisi quis ipsum pulvinar体马来铁线莲();[医][医]</p>.

我需要用一个关闭和打开的<br><br>标记替换双</p><p>标记,以维护段落中断,然后删除用于换行的任何剩余的<br>标记。

我试过了,它几乎成功了:

代码语言:javascript
运行
复制
<script>
$('#V01-cntntTxt').html($('#V01-cntntTxt').html().replace(/<br><br>/g, '</p>'));
$('#V01-cntntTxt').html($('#V01-cntntTxt').html().replace(/<br>/g, ' '));
</script>

然而,结果却是一个空段落。中间的两个</p></p>标记是向后的。应该是</p><p>而不是<p></p>。似乎是插入了一个开始标记,即使我没有指定它应该插入。

这是上述脚本的结果,标记向后显示:

<p id="V01-cntntTxt">Lorem ipsum dolor,<p id="V01-cntntTxt">Lorem ipsum dolor,consectetur adipiscing elit.[医][医][[医]][医][[ at ]][[at]][[at]]:[医][医][[at]][[at]][[at]]。[医]前庭和大前庭,双侧前庭,前庭,大前庭,双侧前庭,大前庭,前庭和大前庭。<p></p>Morbi interdum et nisl ullamcorper .Duis nec nisi quis ipsum pulvinar体马来铁线莲();[医][医]</p>.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-13 17:28:58

似乎替换innerHTML中的<p>标记并不是按照需要创建新的<p>标记,因此您应该显式地创建一个<p>标记,并在此时将内容拆分到新的<p>标记中。为此,我们将使用string.split将字符串的内容拆分为一个数组,并为每个数组索引创建一个新的<p>标记:

代码语言:javascript
运行
复制
var par = $('#V01-cntntTxt'); // our first tag
var splits = par.html().split("<br><br>"); // using the first tag to get the array
par.html(splits[0].replace(/<br>/g, " ")); // handling the first index
splits.splice(0, 1) // deleting the first index so it doesnt happen twice
splits.forEach(function(str){ // iterating through the array of strings
    var nPar = $("<p></p>"); // a new <p> tag
    nPar.html(str.replace(/<br>/g, " ")); // removing single <br>s from it
    nPar.insertAfter(par);
    par = nPar; // if another is found it will insert after this
})

这里还有一个演示的这里

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10144670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档