首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js+分页+省略

以下是关于JavaScript中实现分页并处理省略情况的相关内容:

一、基础概念

  1. 分页
    • 分页是将数据按照一定的规则划分成多个页面进行显示的技术。在前端开发中,当处理大量数据(如从服务器获取的数据列表)时,为了提高用户体验,避免一次性加载过多数据导致页面卡顿或者加载时间过长,就会采用分页的方式。
    • 例如,一个包含100条商品信息的列表,每页显示10条,那么就会有10页可供浏览。
  • 省略(在分页场景下可能涉及到文本省略等情况)
    • 在前端显示中,如果文本内容过长,在有限的页面空间内可能无法完整显示。这时候就需要对文本进行省略处理。比如对于商品描述字段,如果过长,在商品列表的分页显示中,只显示部分内容并用省略号表示还有更多内容可查看。

二、优势

  1. 分页的优势
    • 提高性能:减少一次性加载的数据量,减轻浏览器的内存压力和网络传输压力。
    • 提升用户体验:方便用户快速定位到自己想要查看的数据部分,不需要在大量数据中进行滚动查找。
  • 省略的优势
    • 美观性:保持页面布局的整齐,避免因为过长的文本破坏页面结构。
    • 信息聚焦:引导用户关注关键信息,对于想获取更多信息的用户,可以通过特定的交互(如点击展开)来查看完整内容。

三、类型

  1. 分页类型
    • 数字分页:通过显示页码(如1、2、3...)让用户直接点击跳转到指定页面。
    • 上一页/下一页分页:提供简单的导航按钮,用户可以逐步浏览下一页或者返回上一页。
    • 无限滚动分页(虽然不完全是传统意义上的分页,但也是一种数据按部分加载的方式):当用户滚动页面到底部时自动加载下一页的数据。
  • 省略类型
    • 单行省略:只显示一行文本,如果超出则用省略号表示。
    • 多行省略:在指定的多行内显示文本,超出部分省略。

四、应用场景

  1. 分页应用场景
    • 数据列表展示:如在电商平台的商品列表、新闻网站的文章列表等。
    • 搜索结果展示:当搜索到大量结果时,通过分页显示方便用户浏览。
  • 省略应用场景
    • 商品详情页面的部分描述展示,在列表页中对商品名称、简介等进行省略处理。

五、可能遇到的问题及解决方法

  1. 分页问题
    • 数据加载不同步:如果数据是动态从服务器获取的,在切换分页时可能会出现数据加载不完全或者顺序错乱的情况。
      • 解决方法:在切换分页时,确保正确发送分页参数(如页码、每页数量)到服务器,并且在接收到新数据后清空之前的数据展示区域,按照正确的顺序重新渲染数据。
    • 分页导航失效:例如点击分页按钮没有反应。
      • 解决方法:检查事件绑定是否正确,是否有JavaScript错误阻止了事件的正常触发。可以通过浏览器的开发者工具查看控制台是否有报错信息。
  • 省略问题
    • 省略显示不正常:可能由于CSS样式设置错误导致文本没有按照预期省略。
      • 解决方法:对于单行省略,可以使用text - overflow: ellipsis; white - space: nowrap; overflow: hidden;的组合样式;对于多行省略,在支持的环境下可以使用-webkit - line - clamp属性结合display: -webkit - box; -webkit - box - orient: vertical; overflow: hidden;来实现。

以下是一个简单的JavaScript实现分页并处理文本省略的示例代码:

代码语言:txt
复制
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF - 8">
    <meta name="viewport" content="width=device-width, initial - scale = 1.0">
    <title>分页与省略示例</title>
    <style>
        .item {
            width: 200px;
            border: 1px solid #ccc;
            padding: 10px;
            margin - bottom: 10px;
            text - overflow: ellipsis;
            white - space: nowrap;
            overflow: hidden;
        }
    </style>
</head>

<body>
    <div id="content"></div>
    <button id="prev">上一页</button>
    <button id="next">下一页</button>

    <script>
        const data = [];
        for (let i = 1; i <= 100; i++) {
            data.push('这是第' + i + '个商品名称,这是一个比较长的商品名称示例用于测试省略效果');
        }
        let currentPage = 1;
        const pageSize = 10;

        function renderPage(page) {
            const start = (page - 1) * pageSize;
            const end = start + pageSize;
            const pageData = data.slice(start, end);
            const contentDiv = document.getElementById('content');
            contentDiv.innerHTML = '';
            pageData.forEach(item => {
                const div = document.createElement('div');
                div.className = 'item';
                div.textContent = item;
                contentDiv.appendChild(div);
            });
        }

        document.getElementById('prev').onclick = function () {
            if (currentPage > 1) {
                currentPage--;
                renderPage(currentPage);
            }
        };
        document.getElementById('next').onclick = function () {
            if (currentPage < Math.ceil(data.length / pageSize)) {
                currentPage++;
                renderPage(currentPage);
            }
        };
        renderPage(currentPage);
    </script>
</body>

</html>

在这个示例中:

  • 首先创建了一个包含100个模拟商品名称的数组data
  • 定义了currentPage(当前页码)和pageSize(每页显示数量)。
  • renderPage函数根据当前页码从数据数组中截取相应的数据,并将其渲染到页面上,同时对每个商品名称应用了单行省略的CSS样式。
  • 上一页和下一页按钮的事件处理程序会根据规则更新currentPage并重新渲染页面。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

带有省略号的分页器

带有省略号的分页器 目标与需求分析 假设总页数为 totalPage ,当前点击选中的页数为 clickPage 该值从 1 开始计算,总页数从大于 7 开始构造省略号的按钮。...依据分类讨论可以得到以下四种情况: 图片 我们通过几个具体情况来进一步分析什么时候产生省略号,假设 totalPage 为 9: 图片 代码实现 // 点击页 clickPage = parseInt(...null,null,null,null,totalPage.toString()]; // 用来标记 clickPage 在数组中的索引位置 let index = 0; // 判断第二位是否是省略号按钮...'; } // 判断倒数第二位是否是省略号按钮 if (clickPage < totalPage - 3) { pageArray[5] = '......("click", async function (e) { e.stopPropagation(); // 具体操作 refreshPage(pageOnClicked); // 每次重新选择分页就需要刷新分页器

1.4K20
  • 文本溢出截断省略

    文本溢出截断省略 文本溢出截断省略是比较常见的业务场景,主要分为单行文本溢出截断省略与多行文本溢出截断省略,单行的截断方案比较简单,多行截断相对比较复杂。...单行溢出省略 单行文本溢出截断省略直接使用CSS即可,其无兼容问题,文本溢出范围才显示省略号,否则不显示省略号,省略号位置显示刚好,但是只能作为单行文本溢出截断省略的解决方案。...*/ } 多行溢出省略 按行计算 CSS方案 多行文本溢出截断省略按行计算使用CSS,其文本溢出范围才显示省略号,否则不显示省略号,省略号位置显示刚好,但是兼容性一般,line-clamp...,省略号显示位置略有偏差。...CSS,利用Float的浮动,通过::before与::after两个伪元素实现浮动操作,其无兼容问题,文本溢出范围才显示省略号,否则不显示省略号,但省略号显示可能不会刚刚好,有时会遮住一半文字。

    1.7K10

    python测试开发django-116.Paginator分页器页数大时显示省略号...

    前言 使用django自带的Paginator分页器集合bootstrap的pagination控件可以实现分页功能, 如果页数较大的时候,希望能显示省略号+当前页,这样看起来更美观一点。...自定义分页功能 自定义一个分页功能,当分页导航栏数量很多时,多的页码显示省略号…,传3个参数 paginator Paginator分页器实例对象 page Page类实例对象,paginator.page...(页码数)获取 is_paginated=True 是否需要显示分页导航栏 参考博客https://www.zmrenwu.com/courses/django-blog-tutorial/materials...DOCTYPE html> Bootstrap 实例 - 分页的状态</title...endif %} {# 下一页按钮结束#} 实现效果 页码效果展示 中间页码显示省略号

    73410

    原生CSS实现单行多余省略和多行多余省略

    在日常开发中,经常会遇到一些省略文本的需求,比如“文本在一行显示,超出部分在结尾用省略号显示”、“最多显示三行,超出部分在第三行末尾用省略号显示”。 这些需求用纯CSS即可实现。... 单行省略 .one-line 定义了单行省略样式,样式含义: overflow: hidden 隐藏超出元素区域的内容 text-overflow: ellipsis 以省略号显示超出的文本...white-space: nowrap 设置文本不换行 word-break: break-all 即使结尾处是英文单词,也直接截断,不需要在空格或连字符处换行 多行省略 .mutiple-line-ellipsis...定义了多行省略样式,样式含义: overflow: hidden 隐藏超出元素区域的内容 text-overflow: ellipsis 以省略号显示超出的文本 display: -webkit-box

    3.4K20

    文本内容超出省略

    , 17 4月 2021 作者 847954981@qq.com 前端学习 文本内容超出省略 在网页中我们经常出现一些文本超出的情况,而一般网页对此的解决方案是通过省略号还省略超出部分。...单行文本超出省略 知识点:强制不换行、元素内容溢出处理和文本溢出省略。...并且超出的内容不可见 inherit 内容不会被修剪,会呈现在元素框之外 scroll 内容会被修剪,浏览器会显示滚动条以便查看超出的内容 auto 由浏览器定夺,如果内容被修剪,就会显示滚动条 文本溢出省略...ellipsis:表示用一个省略号 (“…”)来表示被截断的文本。...多行文本超出省略 在WebKit内核中,多行文本超出省略比较简单,首先我们需要将之前单行文本中的不换行属性white-space: nowrap去掉,并设置一下属性: /* 隐藏超出部分 */ overflow

    1.2K50

    区区省略号竟有大作为...

    1、省略号=“后继选择” 我印象中第一次看到省略号是在 Windows 3.1 中,那还是我的第一台电脑。...2、省略号=”在这里打字“ 在近些年开始,陆续诞生了很多产品使用省略号来代表文本域,而现在已然流行开来。...心理效应:传统上,一个省略号代表着省略词组/语句的一部分,也就是说有省略号的地方其实应该是有文字的。在文本域中使用省略号则在某种程度上,能够刺激你在空白部分进行文本输入。...随着现在的设计师们越来越强调简约的设计,相信省略号的这一用法会越来越普及开来。 4、省略号=“稍等片刻” 省略号另外一个常见的用法就是告诉用户当前动作正在执行中,比如“加载中...“、”连接中..."...小身板大作为 现在,你已经看到了有关省略号的多种不同用法,那你赞同我说的省略号是最为牛逼的字符吗? 我是说,谁会想到区区一个省略号竟能有如此大的应用? 更多的用法等你来整理...

    910130

    Layui分页_pagehelper分页使用

    本文介绍了LayUI分页,LayUI动态分页,LayUI laypage分页,LayUI laypage刷新当前页,分享给大家,具体如下: 效果图: 一、引用js依赖 主要是jquery-1.11.3....min.js 和 layui.all.js , json2.js用来做json对象转换的 二、js分页方法封装(分页使用模板laytpl) 1、模板渲染 /** * 分页模板的渲染方法 * @param.../** * layuilaypage 分页封装 * @param laypageDivId 分页控件Div层的id * @param pageParams 分页的参数 * @param templateId...,可省略 /** * 分页插件刷新当前页的数据,必须有跳转的确定按钮,因为根据按钮点击事件刷新 */ function reloadCurrentPage(){ $(“.layui-laypage-btn...”).click(); }; 三、页面代码 1、分页表格及分页控件 许可名称许可编码菜单名称许可链接 2、分页模板 { {# layui.each(d.list, function(index,

    2.8K20

    mybatis的逻辑分页和物理分页_mybatis分页原理

    物理分页Mybatis插件原理分析(三)分页插件 Mybatis提供了一个简单的逻辑分页使用类RowBounds(物理分页当然就是我们在sql语句中指定limit和offset值),在DefaultSqlSession...提供的某些查询接口中我们可以看到RowBounds是作为参数用来进行分页的,如下接口: public List selectList(String statement, Object parameter...{ /* 默认offset是0**/ public static final int NO_ROW_OFFSET = 0; /* 默认Limit是int的最大值,因此它使用的是逻辑分页...public int getOffset() { return offset; } public int getLimit() { return limit; } } 逻辑分页的实现原理...: 在DefaultResultSetHandler中,逻辑分页会将所有的结果都查询到,然后根据RowBounds中提供的offset和limit值来获取最后的结果,DefaultResultSetHandler

    1.5K20

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券