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