9

HTMLコードを含むJavaScript文字列があります。表示して、単語数に応じてreadmore/lessトグルを付けました。問題は、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

"...more" は段落に含めるべきではありません。段落の外に、個別に追加してみてください。

代わりにすべてをラップして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 に答える