使用JavaScript字符串()来创建更多链接(Using javascript substrin

2019-08-31 09:46发布

我正在开发,拉从一个数据库中的一些内容,并创建第一个100个字符如下后阅读全文链接传统的ASP页面;

<div class="contentdetail"><%=StripHTML(rspropertyresults.Fields.Item("ContentDetails").Value)%></div>

<script type="text/javascript">
    $(function() {

        var cutoff = 200;
        var text = $('div.contentdetail').text();
        var rest = $('div.contentdetail').text().substring(cutoff);
        if (text.length > 200) {
          var period = rest.indexOf('.');
          var space = rest.indexOf(' ');
          cutoff += Math.max(Math.min(period, space), 0);
        }

        var visibleText = $('div.contentdetail').text().substring(0, cutoff);

        $('div.contentdetail')
            .html(visibleText + ('<span>' + rest + '</span>'))
            .append('<a title="Read More" style="font-weight:bold;display: block; cursor: pointer;">Read More&hellip;</a>')
            .click(function() {
                $(this).find('span').toggle();
                $(this).find('a:last').hide();
            });

        $('div.contentdetail span').hide();
    });
</script>

然而,剧本显然只是后100个字符切文本关闭。 最好我想它继续书写文字,直到第一个周期或空间,例如。 这是可能的吗?

谢谢。

Answer 1:

var cutoff = 100;
var text = $('div.contentdetail').text();
var rest = text.substring(cutoff);
if (text.length > cutoff) {
  var period = rest.indexOf('.');
  var space = rest.indexOf(' ');
  cutoff += Math.max(Math.min(period, space), 0);
}
// Assign the rest again, because we recalculated the cutoff
rest = text.substring(cutoff);
var visibleText = $('div.contentdetail').text().substring(0, cutoff);

编辑:缩短了它一下。 编辑 :修正了一个错误编辑 :生活质量改善



Answer 2:

怎么样:

var text= $('div.contentdetail').text();
var match= text.match( /^(.{100}([^ .]{0,20}[ .])?)(.{20,})$/ );
if (match!==null) {
    var visibleText = match[1];
    var textToHide = match[3];
    ...do replacement...
}

{0,20}将期待一个空间或期限最多20个字符放弃和正好是100个字符打破之前。 这从打破长度不限的停留在一个非常长的字。 在{20,}在端部停止正在取得匹配时,它只会隐藏的内容的无意义少量。

对于替换代码, 这样做:

.html(visibleText + ('<span>' + textToHide + '</span>'))

这是将纯文本到HTML中的上下文不进行转义处理。 如果visibleTexttextToHide包含任何<&字符,你会重整他们,也许造成的过程中XSS安全问题。

相反,创建集text() div和单独的跨度,因为那是你读摆在首位的文本的方式。



Answer 3:

这是一个相当简单的方法在词汇层面得到的结局,和关于人物的定限制拍摄。

var limit        = 100,
    text         = $('div.contentdetail').text().split(/\s+/),
    word,
    letter_count = 0,
    trunc        = '',
    i            = 0;

while (i < text.length && letter_count < limit) {
  word         = text[i++];
  trunc       += word+' ';
  letter_count = trunc.length-1;

}

trunc = $.trim(trunc)+'...';
console.log(trunc);


文章来源: Using javascript substring() to create a read more link