Javascript:在字符串中关闭打开的HTML标记

时间:2013-02-07 10:39:48

标签: javascript

我有一个包含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解决方案来关闭字符串中未关闭的标签。任何形式的帮助都非常感谢。提前谢谢大家。

3 个答案:

答案 0 :(得分:14)

使用此代码

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

使用

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

将返回

 <b>some text</b>

答案 1 :(得分:1)

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

您可能希望将所有内容都包装在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>

答案 2 :(得分:0)

我遇到了同样的问题并使用了以下解决方案。我把它调整到你的例子。

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

从你要收缩的div中获取html

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

使用innerHTML,这会处理html中的任何打开标签

divContent.innerHTML = get_html;

替换html并添加参见

$('.shrinkable').html(divContent.innerHTML).append('<span class="see-more">...more</span>');