html摘要点击展开,javascript实现html内容截断得到摘要

javascript实现的html内容截断,得到文章列表中的摘要信息。一般博客的首页只显示文章的摘要,点击标题进入以后查看全文。

下面是JavaScript实现的html内容截断,获取html文章内容的摘要。

function removelosttag(tags, nowtag) {

for (var i = tags.length - 1; i >= 0;i-- ) if (tags[i].indexOf(nowtag) == 1) { tags.splice(i, 1); break; }

}

function HtmlSubstring(html, len) {

var entity = [], htmlTag = [], arrWord, r = "", rWordCount = 0, wordNum

, rxSingle = /^]+>/, rxTagName = /]*>/i

, inputHTMLTag = []

,nowtag,losetag;

//替换字符§为他的实体“§”,以便进行下一步替换

html = html.replace(/§/g, '§');

//替换实体为特殊字符§

html = html.replace(/&[^;]+;/g, function ($0) { entity[entity.length] = $0; return '§'; });

//搜集HTML标签并且替换为其他内容,以便拆分内容

html = html.replace(/]+>/g, function ($0) { htmlTag[htmlTag.length] = $0; return '_HTMLTAG_'; });

arrWord = html.split('_HTMLTAG_');

wordNum = arrWord.length;

for (var i = 0; i < wordNum; i++) {

if (rWordCount + arrWord[i].length >= len) r += arrWord[i].substring(0, len - rWordCount);

else r += arrWord[i];

rWordCount += arrWord[i].length;

if (rWordCount >= len) break;

//搜集已经添加的非单标签

if (i < wordNum - 1) {

if (!rxSingle.test(htmlTag[i])) {//不是单标签

if (rxEndTag.test(htmlTag[i])) {//这里注意区分结束标签是否和最近一次加入的标签匹配

nowtag = rxTagName.exec(htmlTag[i])[1].toLowerCase();

losetag = rxTagName.exec(inputHTMLTag[inputHTMLTag.length - 1])[1].toLowerCase();

inputHTMLTag.pop(); //弹出最近加入开始标签

if (nowtag != losetag) {

r += '' + losetag + '>'; //补全

removelosttag(inputHTMLTag, nowtag);

}

}

else inputHTMLTag[inputHTMLTag.length] = htmlTag[i].toLowerCase(); //非结束标签则添加

}

r += htmlTag[i];

}

}

//替换回实体

for (k in entity) r = r.replace('§', entity[k]);

//封闭标签

for (var i = inputHTMLTag.length - 1; i >= 0; i--) r += '' + rxTagName.exec(inputHTMLTag[i])[1] + '>';

return r;

}

document.writeln('');

//document.writeln(HtmlSubstring('正常字符串测试', 5));

//document.writeln(HtmlSubstring('带标签的字符串截断', 5));

//document.writeln(HtmlSubstring('嵌套标签截断123测试lala', 9));

//document.writeln(HtmlSubstring('嵌套标签logo.gif截断测试', 5));

//document.writeln(HtmlSubstring('1

©签截断

', 6));

document.writeln(HtmlSubstring('

关键字:webservice web服务

asmx 格式无法识别

  直接访问“xxxx.asmx/方法名称”获取方法返回内容时,如果未配置过web.config文 件,会出现下面的错误

“/”应用程序中的服务器错误。 '));

document.writeln('');

加支付宝好友偷能量挖...

2012-1-31Web开发网

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值