我有一个2500字的字符串,我需要将其放在不同的DIV
中。我使用text = text.split(' ')
函数检索每个单词,然后填充DIVs
,直到DIV.scrollHeight
高于DIV.offsetHeight
,然后转到下一个DIV
我遇到的问题是我的2500字符串中的HTML标签完全搞砸了:
它会关闭我不应该显示的<b>
标记,不显示</b>
它应该显示的位置,不显示此标记的<font
部分,不会显示{ {1}}等等。
知道为什么吗?
非常感谢!
编辑:根据要求,这是整个jQuery代码。请原谅我的任何错误:)
</font>
答案 0 :(得分:1)
我认为问题可能是您可能会拆分标签,然后浏览器会尝试解决这个问题。
使用算法,您可能会得到类似的结果:
<div>
<p>The text starts here
</div>
<div>
and ends here</p>
</div>
这显然不是最好的事情。我认为你应该跟踪开/关标签,只有当它们全部关闭时才更改容器div
答案 1 :(得分:1)
我已经解决了这个问题。
我使用以下正则表达式来捕获单词和HTML标记,并使用以下.replace()
在我<br/>
之后添加空格(这是问题的根源)。
•var texte = texte.replace(/<br>/g, '<br/> ');
•var TABLEAU = texte.match(/<\s*(\w+\b)(?:(?!<\s*\/\s*\1\b)[\s\S])*<\s*\/\s*\1\s*>|\S+/gi);
这就是诀窍。
全部谢谢!
答案 2 :(得分:1)
如果您想将标记内容视为单个单词,可以尝试使用
而不是var TABLEAU = texte.split(' ');
var nodes = $('<div/>',{ html: texte }).contents();
var TABLEAU = nodes.map(function(){
return this.nodeType === 3 ? $(this).text().split(' ') : this;
}).get();