9

我有一个包含 HTML 代码的 javascript 字符串。我显示它,并根据字数附加了一个阅读更多/更少的切换器。问题是,当我缩小 HTML 代码时,它可能有开放标签,假设

<p>A computer is a general purpose device that can be <b>programmed</b> to carry out a finite set of arithmetic or logical operations</p>

当收缩成为

<p>A computer is a general purpose device that can be <b>programmed...more</p>

由于未封闭的粗体标签,以下数据变为粗体。

我想要一个 javascript 解决方案来关闭字符串中未关闭的标签。任何形式的帮助都将受到高度赞赏。谢谢大家。

4

3 回答 3

22

使用此代码

function fixHtml(html){
  var div = document.createElement('div');
  div.innerHTML=html
  return (div.innerHTML);
}

使用

var fixed = fixHtml("<b>some text")

将返回

 <b>some text</b>
于 2015-07-17T21:48:51.047 回答
1

“...更多”甚至不应该出现在段落中。尝试在段落之外单独添加它。

您可能希望将所有内容包装在 a 中div,然后将其缩小。

<div class="shrinkable">

    <p>A computer is a general purpose device that can be <b>programmed</b> to carry out a finite set of arithmetic or logical operations</p>
    <span class="see-more">...more</span>

</div>
于 2013-02-07T10:44:17.450 回答
0

我遇到了同样的问题并使用了以下解决方案。我根据您的示例对其进行了调整。

var divContent = document.createElement('div');

从要缩小的 div 中获取 html

var get_html = $('.shrinkable').html();

使用 innerHTML,这会处理 html 中的所有打开标签

divContent.innerHTML = get_html;

替换html并添加see

$('.shrinkable').html(divContent.innerHTML).append('<span class="see-more">...more</span>');
于 2013-02-14T11:08:17.733 回答