0

0

某页码显示的helper 少量调整,另附js版_javascript技巧

php中文网

php中文网

发布时间:2016-05-16 18:19:39

|

1171人浏览过

|

来源于php中文网

原创

如果你只想下载现成的用,可以到这个页面上去找
许可证是“WTFPL”,也就是“Do What The Fuck You Want To Public License”。

海螺语音
海螺语音

海螺AI推出的AI语音生成工具,支持多种语种、情绪和效果。

下载
源代码如下(因为有注释,就不另外说明了):
复制代码 代码如下:

public static class PageNumExt
{
///
/// 使用传入的委托计算并产生友好的页码。
///

///
/// 当前页码
/// 处理页码的方式
/// 处理被折叠页码的方式
/// 临近页码的数量
/// 阻止折叠页码的临界值,超过这个数目的页码将会被折叠
public static void PageNumView(this object o,
long currentPage, PageNumAction actionPageNum, Action actionFolding,
long maxSiblings = 2, long preventFolding = 1)
{
o.PageNumView(currentPage, actionPageNum, actionPageNum, actionFolding, maxSiblings, preventFolding);
}
///
/// 使用传入的委托计算并产生友好的页码。当前页码将会被特别对待。
///

///
/// 当前页码
/// 处理当前页码的方式
/// 处理页码的方式
/// 处理被折叠页码的方式
/// 临近页码的数量
/// 阻止折叠页码的临界值,超过这个数目的页码将会被折叠
public static void PageNumView(this object o,
long currentPage, PageNumAction actionCurrent,
PageNumAction actionPageNum, Action actionFolding,
long maxSiblings = 2, long preventFolding = 1)
{
o.PageNumView(
currentPage, actionCurrent,
1, long.MaxValue,
actionPageNum, i => { },
maxSiblings, actionPageNum,
preventFolding, actionFolding,
maxSiblings, 0,
actionPageNum, i => { }
);
}
///
/// 根据传入的参数和委托来计算并产生友好的页码。当前页码将会被特别对待。
///

///
/// 当前页码
/// 处理当前页码的方式
/// 预设的起始页码
/// 预设的结束页码
/// 处理页码的方式
/// 处理被折叠页码的方式
/// 临近页码的数量
/// 阻止折叠页码的临界值,超过这个数目的页码将会被折叠
public static void PageNumView(this object o,
long currentPage, PageNumAction actionCurrent,
long beginPage, long endPage,
PageNumAction actionPageNum, Action actionFolding,
long maxSiblings = 2, long preventFolding = 1)
{
o.PageNumView(currentPage, actionCurrent, beginPage, endPage, actionPageNum, actionPageNum, actionPageNum, actionFolding, maxSiblings, preventFolding);
}
///
/// 根据传入的参数和委托来计算并产生友好的页码。当前页码、起始页码和终止页码都指定了专用的委托来处理。
///

///
/// 当前页码
/// 处理当前页码的方式
/// 预设的起始页码
/// 预设的结束页码
/// 处理起始页码的方式
/// 处理结束页码的方式
/// 处理临近页码的方式
/// 处理被折叠页码的方式
/// 临近页码的数量
/// 阻止折叠页码的临界值,超过这个数目的页码将会被折叠
public static void PageNumView(this object o,
long currentPage, PageNumAction actionCurrent,
long beginPage, long endPage,
PageNumAction actionBegin, PageNumAction actionEnd,
PageNumAction actionSebling, Action actionFolding,
long maxSiblings = 2, long preventFolding = 1)
{
o.PageNumView(
currentPage, actionCurrent,
beginPage, endPage,
actionBegin, actionEnd,
maxSiblings, actionSebling,
preventFolding, actionFolding,
maxSiblings, maxSiblings,
actionSebling, actionSebling
);
}
///
/// 根据传入的参数和委托来计算并产生友好的页码。每一种页码的具体处理方式都需要由调用方指派委托。
///

///
/// 当前页码
/// 处理当前页码的方式
/// 预设的起始页码
/// 预设的结束页码
/// 处理起始页码的方式
/// 处理结束页码的方式
/// 当前页码的临近页码数量
/// 处理临近页码的方式
/// 阻止折叠页码的临界值,超过这个数目的页码将会被折叠
/// 处理被折叠页码的方式
/// 起始页临近页码的数量
/// 结束页临近页码的数量
/// 处理起始页临近页码的方式
/// 处理结束页临近页码的方式
public static void PageNumView(this object o,
long currentPage, PageNumAction actionCurrent,
long beginPage, long endPage,
PageNumAction actionBegin, PageNumAction actionEnd,
long currentSiblings, PageNumAction actionCurrentSibling,
long preventFolding, Action actionFolding,
long endOfBegin, long beginOfEnd,
PageNumAction actionBeginSibling, PageNumAction actionEndSibling
)
{
long i = beginPage;
// 如果起始页小于当前页,就开始处理起始页
if (beginPage #region
{
actionBegin(beginPage);
i++;
endOfBegin += i; // 解决靠近起始页的页码之后
var siblingBegin = currentPage - currentSiblings; // 当前页的临近页从何处开始
var foldingStart = siblingBegin - preventFolding; // 页码折叠的底线
if (endOfBegin > siblingBegin)
endOfBegin = siblingBegin; // 保证当前页的临近页,牺牲起始页的临近页
for (; i actionBeginSibling(i);
if (i {
actionFolding();
i = foldingStart + 1; // 跳到折叠之后的页码
}
}
#endregion
// 处理当前页之前的临近页
for (; i actionCurrentSibling(i);
// 处理当前页
actionCurrent(currentPage);
i = currentPage + 1; // 表示当前页已经处理完成。
// 由于不能保证当前页和期望的起始页的关系,所以在此从当前页开始计算。
var goal = i + currentSiblings; // 设定一个目标
if (goal > endPage) // 目标不要超过结束页
goal = endPage;
// 处理当前页之后的临近页,直到到达目标页为止
for (; i actionCurrentSibling(i);
// 如果结束页大于当前页,就开始处理结束页
if (endPage > currentPage)
#region
{
beginOfEnd = endPage - beginOfEnd; // 计算出结束页的临近页从何处开始
var foldingStart = beginOfEnd - preventFolding;
if (i {
actionFolding();
i = beginOfEnd;
}
else // 全部当作当前页的临近页来处理,但保留结束页的临近页
for (; i actionCurrentSibling(i);

for (; i actionEndSibling(i);
actionEnd(endPage);
}
#endregion
}
}

JavaScript版的源代码可以直接在前面提到的页面下载,不过这里也列出一下:
复制代码 代码如下:

!function () {
var g = this;
var def_maxSiblings = 2;
var def_preventFolding = 1;
function pnView1(
currentPage, actionPageNum, actionFolding,
maxSiblings, preventFolding
) {
///
/// 使用传入的委托计算并产生友好的页码。
///

///
/// 当前页码
/// 处理页码的方式
/// 处理被折叠页码的方式
/// 临近页码的数量
/// 阻止折叠页码的临界值,超过这个数目的页码将会被折叠
pnView2(currentPage, actionPageNum, actionPageNum, actionFolding, maxSiblings || def_maxSiblings, preventFolding || def_preventFolding);
}
function pnView2(
currentPage, actionCurrent,
actionPageNum, actionFolding,
maxSiblings, preventFolding
) {
///
/// 使用传入的委托计算并产生友好的页码。当前页码将会被特别对待。
///

///
/// 当前页码
/// 处理当前页码的方式
/// 处理页码的方式
/// 处理被折叠页码的方式
/// 临近页码的数量
/// 阻止折叠页码的临界值,超过这个数目的页码将会被折叠
pnView(
currentPage, actionCurrent,
1, Number.POSITIVE_INFINITY,
actionPageNum, null,
maxSiblings || def_maxSiblings, actionPageNum,
preventFolding || def_preventFolding, actionFolding,
maxSiblings || def_maxSiblings, 0,
actionPageNum, null
);
}
function pnView3(
currentPage, actionCurrent,
beginPage, endPage,
actionPageNum, actionFolding,
maxSiblings, preventFolding
) {
///
/// 根据传入的参数和委托来计算并产生友好的页码。当前页码将会被特别对待。
///

///
/// 当前页码
/// 处理当前页码的方式
/// 预设的起始页码
/// 预设的结束页码
/// 处理页码的方式
/// 处理被折叠页码的方式
/// 临近页码的数量
/// 阻止折叠页码的临界值,超过这个数目的页码将会被折叠
pnView4(currentPage, actionCurrent, beginPage, endPage, actionPageNum, actionPageNum, actionPageNum, actionFolding, maxSiblings || def_maxSiblings, preventFolding || def_preventFolding);
}
function pnView4(
currentPage, actionCurrent,
beginPage, endPage,
actionBegin, actionEnd,
actionSebling, actionFolding,
maxSiblings, preventFolding
) {
///
/// 根据传入的参数和委托来计算并产生友好的页码。当前页码、起始页码和终止页码都指定了专用的委托来处理。
///

///
/// 当前页码
/// 处理当前页码的方式
/// 预设的起始页码
/// 预设的结束页码
/// 处理起始页码的方式
/// 处理结束页码的方式
/// 处理临近页码的方式
/// 处理被折叠页码的方式
/// 临近页码的数量
/// 阻止折叠页码的临界值,超过这个数目的页码将会被折叠
pnView(
currentPage, actionCurrent,
beginPage, endPage,
actionBegin, actionEnd,
maxSiblings || def_maxSiblings, actionSebling,
preventFolding || def_preventFolding, actionFolding,
maxSiblings || def_maxSiblings, maxSiblings || def_maxSiblings,
actionSebling, actionSebling
);
}
function pnView(
currentPage, actionCurrent,
beginPage, endPage,
actionBegin, actionEnd,
currentSiblings, actionCurrentSibling,
preventFolding, actionFolding,
endOfBegin, beginOfEnd,
actionBeginSibling, actionEndSibling
) {
///
/// 根据传入的参数和委托来计算并产生友好的页码。每一种页码的具体处理方式都需要由调用方指派委托。
///

///
/// 当前页码
/// 处理当前页码的方式
/// 预设的起始页码
/// 预设的结束页码
/// 处理起始页码的方式
/// 处理结束页码的方式
/// 当前页码的临近页码数量
/// 处理临近页码的方式
/// 阻止折叠页码的临界值,超过这个数目的页码将会被折叠
/// 处理被折叠页码的方式
/// 起始页临近页码的数量
/// 结束页临近页码的数量
/// 处理起始页临近页码的方式
/// 处理结束页临近页码的方式
var i = beginPage;
// 如果起始页小于当前页,就开始处理起始页
if (beginPage actionBegin && actionBegin(beginPage);
i++;
endOfBegin += i; // 解决靠近起始页的页码之后
var siblingBegin = currentPage - currentSiblings; // 当前页的临近页从何处开始
var foldingStart = siblingBegin - preventFolding; // 页码折叠的底线
if (endOfBegin > siblingBegin)
endOfBegin = siblingBegin; // 保证当前页的临近页,牺牲起始页的临近页
for (; i actionBeginSibling && actionBeginSibling(i);
if (i {
actionFolding && actionFolding();
i = foldingStart + 1; // 跳到折叠之后的页码
}
}
// 处理当前页之前的临近页
for (; i actionCurrentSibling && actionCurrentSibling(i);
// 处理当前页
actionCurrent && actionCurrent(currentPage);
i = currentPage + 1; // 表示当前页已经处理完成。
// 由于不能保证当前页和期望的起始页的关系,所以在此从当前页开始计算。
var goal = i + currentSiblings; // 设定一个目标
if (goal > endPage) // 目标不要超过结束页
goal = endPage;
// 处理当前页之后的临近页,直到到达目标页为止
for (; i actionCurrentSibling && actionCurrentSibling(i);
// 如果结束页大于当前页,就开始处理结束页
if (endPage > currentPage) {
beginOfEnd = endPage - beginOfEnd; // 计算出结束页的临近页从何处开始
var foldingStart = beginOfEnd - preventFolding;
if (i {
actionFolding && actionFolding();
i = beginOfEnd;
}
else // 全部当作当前页的临近页来处理,但保留结束页的临近页
{
for (; i actionCurrentSibling && actionCurrentSibling(i);
}

for (; i actionEndSibling && actionEndSibling(i);
actionEnd && actionEnd(endPage);
}
}
g.pnView1 = pnView1;
g.pnView2 = pnView2;
g.pnView3 = pnView3;
g.pnView4 = pnView4;
g.pnView5 = pnView;
g.pnView = pnView;
} ();

/201009/yuanma/pnView_NanaView.rar

相关专题

更多
Word 字间距调整方法汇总
Word 字间距调整方法汇总

本专题整合了Word字间距调整方法,阅读下面的文章了解更详细操作。

2

2025.12.24

任务管理器教程
任务管理器教程

本专题整合了任务管理器相关教程,阅读下面的文章了解更多详细操作。

2

2025.12.24

AppleID格式
AppleID格式

本专题整合了AppleID相关内容,阅读专题下面的文章了解更多详细教程。

0

2025.12.24

csgo视频观看入口合集
csgo视频观看入口合集

本专题整合了csgo观看入口合集,阅读下面的文章了知道更多入口地址。

29

2025.12.24

yandex外贸入口合集
yandex外贸入口合集

本专题汇总了yandex外贸入口地址,阅读下面的文章了解更多内容。

58

2025.12.24

添加脚注通用方法
添加脚注通用方法

本专题整合了添加脚注方法合集,阅读专题下面的文章了解更多内容。

1

2025.12.24

重启电脑教程汇总
重启电脑教程汇总

本专题整合了重启电脑操作教程,阅读下面的文章了解更多详细教程。

3

2025.12.24

纸张尺寸汇总
纸张尺寸汇总

本专题整合了纸张尺寸相关内容,阅读专题下面的文章了解更多内容。

5

2025.12.24

Java Spring Boot 微服务实战
Java Spring Boot 微服务实战

本专题深入讲解 Java Spring Boot 在微服务架构中的应用,内容涵盖服务注册与发现、REST API开发、配置中心、负载均衡、熔断与限流、日志与监控。通过实际项目案例(如电商订单系统),帮助开发者掌握 从单体应用迁移到高可用微服务系统的完整流程与实战能力。

1

2025.12.24

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Node.js 教程
Node.js 教程

共57课时 | 7.2万人学习

CSS3 教程
CSS3 教程

共18课时 | 3.9万人学习

Vue 教程
Vue 教程

共42课时 | 5.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号