如何动手用js自己写一个分页?

news/2024/11/15 5:38:55/

实现效果

 实现代码

function generateTableHead() {const tableHead = document.getElementById('table-head');tableHead.innerHTML = '';// 添加复选框列的表头const checkboxHead = document.createElement('th');const checkbox = document.createElement('input');checkbox.type = 'checkbox';checkbox.addEventListener('click', function() {const checkboxes = document.querySelectorAll('#table input[type="checkbox"]');checkboxes.forEach(cb => {cb.checked = checkbox.checked;});});checkboxHead.appendChild(checkbox);tableHead.appendChild(checkboxHead);// 添加序号列的表头const indexHead = document.createElement('th');indexHead.textContent = '序号';tableHead.appendChild(indexHead);// 添加其他数据列的表头Object.keys(rowsToShow[0]).forEach(key => {const th = document.createElement('th');th.textContent = key;th.style.width = 'auto';tableHead.appendChild(th);});// 添加处理按钮列的表头const buttonHead = document.createElement('th');buttonHead.textContent = '操作';buttonHead.style.textAlign = 'center'; // 设置浮动tableHead.appendChild(buttonHead);
}// 生成表格行
function generateTableRows(buttonData,btncallback) {const tableBody = document.getElementById('table-body');tableBody.innerHTML = '';rowsToShow.forEach((rowData, index) => {const row = document.createElement('tr');// 添加复选框列const checkboxCell = document.createElement('td');const checkbox = document.createElement('input');checkbox.type = 'checkbox';checkboxCell.appendChild(checkbox);row.appendChild(checkboxCell);// 添加序号列const indexCell = document.createElement('td');indexCell.textContent = index + 1;row.appendChild(indexCell);// 添加其他数据列Object.values(rowData).forEach(value => {const td = document.createElement('td');td.style.width = 'auto';td.textContent = value;row.appendChild(td);});// 添加处理按钮列const buttonCell = document.createElement('td');// buttonCell.style.float = 'right'; // 设置浮动buttonCell.style.textAlign = 'center'; // 设置浮动buttonCell.style.width = 'auto'; // 设置浮动buttonData.forEach(button => {const buttonElement = document.createElement('div');console.log(button.icon)buttonElement.innerHTML = `<div class="button-content" ><span class="icon">${button.icon}</span><span class="label">${button.label}</span></div>`;buttonElement.ev=button.ev;button.class.forEach(cls => {buttonElement.classList.add(cls);});buttonElement.style = button.style; // 设置按钮样式buttonElement.addEventListener('click', function() {if (typeof btncallback === 'function') {btncallback(buttonElement.ev,rowData);}});buttonCell.appendChild(buttonElement);});row.appendChild(buttonCell);tableBody.appendChild(row);});
}// 处理行数据
function handleRowData(rowData) {// 在这里执行处理行数据的操作console.log(rowData);
}// 获取选中数据
function getSelectedData() {const selectedData = [];const checkboxes = document.querySelectorAll('input[type="checkbox"]');checkboxes.forEach((cb, index) => {if (cb.checked) {selectedData.push(rowsToShow[index]);}});return selectedData;
}let activepage=1;let selectCurent=0;// 生成分页function generatePagination(page, totalPages, totalRows,callback) {const pagination = document.getElementById('pagination');pagination.innerHTML = '';const prevButton = document.createElement('a');prevButton.classList.add('wpagebtn');prevButton.classList.add('wpagebtn-hover');prevButton.innerHTML = 'pre';prevButton.addEventListener('click', () => {if (page > 1) {page--;if (typeof callback === 'function') {const result = {page:page,pageSize:pageSize};callback(result);}}});pagination.appendChild(prevButton);const maxVisiblePages = 5; // 最大可见的页数const middlePage = Math.ceil(maxVisiblePages / 2);const startPage = Math.max(1, page - middlePage + 1);const endPage = Math.min(startPage + maxVisiblePages - 1, totalPages);if (startPage > 1) {const firstPageButton = document.createElement('a');firstPageButton.classList.add('wpagebtn');firstPageButton.innerHTML = '1';firstPageButton.addEventListener('click', () => {if (page !== 1) {page = 1;if (typeof callback === 'function') {const result = {page:page,pageSize:pageSize};callback(result);}}});pagination.appendChild(firstPageButton);if (startPage > 2) {const ellipsisButton = document.createElement('a');ellipsisButton.classList.add('wpagebtn');ellipsisButton.innerHTML = '...';pagination.appendChild(ellipsisButton);}}for (let i = startPage; i <= endPage; i++) {const pageButton = document.createElement('a');pageButton.classList.add('wpagebtn');pageButton.innerHTML = i;if (i === page) {activepage=page;pageButton.classList.add('wpagebtn-active');}pageButton.addEventListener('click', () => {if (i !== page) {page = i;if (typeof callback === 'function') {const result = {page:page,pageSize:pageSize};callback(result);}}});pagination.appendChild(pageButton);}if (endPage < totalPages) {if (endPage < totalPages - 1) {const ellipsisButton = document.createElement('a');ellipsisButton.classList.add('wpagebtn');ellipsisButton.innerHTML = '...';pagination.appendChild(ellipsisButton);}const lastPageButton = document.createElement('a');lastPageButton.classList.add('wpagebtn');lastPageButton.innerHTML = totalPages;lastPageButton.addEventListener('click', () => {if (page !== totalPages) {page = totalPages;if (typeof callback === 'function') {const result = {page:page,pageSize:pageSize};callback(result);}}});pagination.appendChild(lastPageButton);}const nextButton = document.createElement('a');nextButton.classList.add('wpagebtn');nextButton.classList.add('wpagebtn-hover');nextButton.innerHTML = 'next';nextButton.addEventListener('click', () => {if (page < totalPages) {page++;if (typeof callback === 'function') {const result = {page:page,pageSize:pageSize};callback(result);}}});pagination.appendChild(nextButton);const totalRowsElement = document.createElement('span');totalRowsElement.classList.add('wpagebtn');totalRowsElement.innerHTML = `总条数:${totalRows}`;pagination.appendChild(totalRowsElement);const selectContainer = document.createElement('select');selectContainer.classList.add('wpage-select');selectContainer.addEventListener('change', () => {const value = parseInt(selectContainer.value);page = 1; // 将当前页码重置为 1activepage = 1; // 重置当前选中的页面selectCurent=value;pageSize=selectCurent;if (typeof callback === 'function') {const result = {page:page,pageSize:pageSize};callback(result);}});const options = [10, 20, 50, 100,200];for (let i = 0; i < options.length; i++) {const option = document.createElement('option');option.value = options[i];option.text = `${options[i]} 条/页`;if(selectCurent==options[i]){option.selected=true;}selectContainer.appendChild(option);}pagination.appendChild(selectContainer);const spango = document.createElement('span');spango.classList.add('wpagebtn');spango.innerText="前往";pagination.appendChild(spango);const inputgo = document.createElement('input');inputgo.classList.add('wpagetinput');inputgo.value= activepage;inputgo.addEventListener('input', ()=> {const value = parseInt(inputgo.value);if (value >= 1 && value <= totalPages) {activepage = value; // 更新当前选中的页面if (typeof callback === 'function') {const result = {page:value,pageSize:pageSize};callback(result);}}});pagination.appendChild(inputgo);const spangoend = document.createElement('span');spangoend.classList.add('wpagebtn');spangoend.innerText="页";pagination.appendChild(spangoend);}

 


http://www.ppmy.cn/news/692802.html

相关文章

基于单片机智能洗衣机设计与实现

功能介绍 以51单片机作为主控系统&#xff1b;利用STC89C52单片机进行数据处理&#xff1b; 通过2路继电器分别控制洗衣机进水、出水相关逻辑运算&#xff1b;采用L298去掉直流电机实现滚筒正反转&#xff1b;通过单片机进行处理数据&#xff0c;把采集到的数据通过LCD液晶显示…

catia打开stp文件不是实体_Catia与Stp格式转换时居然有这么多技巧,你造吗?

STP作为一种常用的3D通用格式&#xff0c;经常会被用于数据的交换。CATIA软件提供了将产品转为STP格式的方法。 1)CATIA产品转STP格式的技巧&#xff1a;保留产品颜色 很多人在将产品转换成STP格式时&#xff0c;常常苦恼于产品颜色的丢失。于是&#xff0c;大家一定会问CATIA有…

stp文件转stl

什么是一 .stp 文件&#xff1f; STP 文件是用于在 CAD 和 CAM 应用程序之间交换产品数据的 3D CAD 文件。它包含有关 3D 对象的信息&#xff0c;并以类似于STEP文件格式的方式保存。STP 文件根据STEP应用程序协议 ISO 10303-2xx 促进应用程序之间的数据交换。该 ISO 定义了 EX…

Creo文件怎么保存为HTML文件,将Creo装配体的每个部件保存成单独的STP格式 | 坐倚北风...

我们在Creo中将装配体保存成STP格式时&#xff0c;默认是将所有的部件保存到一个STP文件中。如果我们希望将所有的部件保存成单独的STP文件&#xff0c;可进行如下设置。 将选项step_export_format的值设置为ap214_is&#xff0c;此时在导出STP对话框中会出现文件结构选项。 选…

​stp文件转ply

什么是一 .stp 文件&#xff1f; STP 文件是用于在 CAD 和 CAM 应用程序之间交换产品数据的 3D CAD 文件。它包含有关 3D 对象的信息&#xff0c;并以类似于STEP文件格式的方式保存。STP 文件根据STEP应用程序协议 ISO 10303-2xx 促进应用程序之间的数据交换。该 ISO 定…

​stp文件转wrl

什么是一 .stp 文件&#xff1f; STP 文件是用于在 CAD 和 CAM 应用程序之间交换产品数据的 3D CAD 文件。它包含有关 3D 对象的信息&#xff0c;并以类似于STEP文件格式的方式保存。STP 文件根据STEP应用程序协议 ISO 10303-2xx 促进应用程序之间的数据交换。该 ISO 定…

catia批量转stp文件格式_CATIA,UG,PROE等等格式批量转成stp,step,igs,iges

CATIA&#xff0c;UG&#xff0c;PROE等等格式批量转成stp,step,igs,iges 开始之前&#xff0c;问大家几个问题&#xff1a; 1、如果你电脑里只安装了CATIA&#xff0c;但是客户却给你发了一个UG的源文件&#xff0c;怎么办&#xff1f; 2、客户用的是PROE&#xff0c;但你用的…

​stp文件转gltf

什么是一 .stp 文件&#xff1f; STP 文件是用于在 CAD 和 CAM 应用程序之间交换产品数据的 3D CAD 文件。它包含有关 3D 对象的信息&#xff0c;并以类似于STEP文件格式的方式保存。STP 文件根据STEP应用程序协议 ISO 10303-2xx 促进应用程序之间的数据交换。该 ISO 定…