Javascript版的StringBuffer,可以级联append

  在项目中用到的,以前在网上找了很多都发现不少的StringBuffer工具类写得较繁琐,而且不能像Java里面的StringBuffer那样能够级联,本实例从大型项目中截取而来分享给大家,也留作备忘。

/**定义StringBuffer字符串工具类**/

function StringBuffer() {
this._strings = new Array();
}

StringBuffer.prototype.append = function(str) {
this._strings.push(str);
return this;
};
StringBuffer.prototype.toString = function() {
var str = arguments.length == 0 ? '' : arguments[0];
return this._strings.join(str);
};
StringBuffer.prototype.clear = function() { // 清空数组
this._strings.length = 0;
};

  调用如下(一个CMS的脚本分页代码案例):

/***定义获取分页字符串方法***/
var getPageStr = function(_nPageCount, _nCurrIndex, _sPageName, _sPageExt){
if(_nPageCount == null || _nPageCount<=1){//如果总页数小于1页则不输出分页项
return;
}
var startNum =1;//记录显示的第一页位置
var endNum = _nPageCount<9?_nPageCount:9;//记录显示的最后一页位置
var nCurrIndex = _nCurrIndex || 0;//这句基本的点多余
var pageHtml=new StringBuffer();
pageHtml.append('<div id="ArtPLink">');
if(_nPageCount>=2&&nCurrIndex>=1){//判断输出上一页
pageHtml.append('<a href="').append(_sPageName).append(".").append(_sPageExt).append('" class=="link_first">首页</a>');
if(nCurrIndex==1){
pageHtml.append('<a class="link_prev" href="').append(_sPageName).append( ".").append(_sPageExt).append('">上一页</a>');
}else{
pageHtml.append('<a class="link_prev" href="').append(_sPageName).append("_").append(nCurrIndex-1).append(".").append(_sPageExt).append('">上一页</a>');
}
}

if(nCurrIndex == 0)
pageHtml.append('<a class="link_current">1</a>');
else if(nCurrIndex<5)
pageHtml.append('<a href="').append(_sPageName).append(".").append(_sPageExt).append('">1</a>&nbsp;');

if(_nPageCount>9&&nCurrIndex>=5){//如果总分页数大于11页,则仅显示当前页前后5条数据
endNum = nCurrIndex+5>_nPageCount?_nPageCount:nCurrIndex+5;
}
if(nCurrIndex>4){
startNum = nCurrIndex-4;
}
for(var i=startNum;i<endNum; i++){//循环输出页码数
if(nCurrIndex == i){
pageHtml.append('<a class="link_current">').append(i+1).append('</a>');
}else{
pageHtml.append('<a href="').append(_sPageName).append("_").append(i).append(".").append(_sPageExt).append('">').append(i-0+1).append('</a>');
}
}
if(_nPageCount>=2&&_nCurrIndex!=_nPageCount-1){//判断输出下一页标识
pageHtml.append('<a class="link_next" href="').append(_sPageName).append("_").append(nCurrIndex-0+1).append(".").append(_sPageExt).append('">下一页</a>');
pageHtml.append('<a class="link_end" href="').append(_sPageName).append("_").append(_nPageCount-1).append(".").append(_sPageExt).append('">尾页</a>&nbsp;');

}
pageHtml.append("</div>");
return pageHtml.toString();
}

相关代码具体效果可见:http://www.tianxuanit.com

posted @ 2012-03-07 14:10  九子龙  阅读(718)  评论(4编辑  收藏  举报