html分页显示数据
时间: 2023-10-10 15:10:56 浏览: 146
在 HTML 中,可以使用表格元素 `<table>` 和分页元素 `<ul>`、`<ol>`、`<nav>` 等来显示数据并实现分页效果。
一种常见的分页方式是将数据按照一定数量分页显示,每页显示若干条数据。具体实现方式如下:
1. 在 HTML 中创建一个表格 `<table>`,并设置表头 `<thead>` 和表体 `<tbody>`。
2. 在表体中添加数据行 `<tr>`,每行显示一个数据项。
3. 使用 CSS 样式设置表格的样式,如边框、背景色等。
4. 在页面底部添加分页元素,如 `<ul>`,并使用 JavaScript 动态生成分页按钮和处理分页事件。
下面是一个简单的示例代码:
```html
<!DOCTYPE html>
<html>
<head>
<title>分页显示数据</title>
<style>
table {
border-collapse: collapse;
width: 100%;
}
th, td {
padding: 8px;
text-align: left;
border-bottom: 1px solid #ddd;
}
tr:hover {
background-color: #f5f5f5;
}
ul.pagination {
display: inline-block;
list-style: none;
margin: 0;
padding: 0;
}
ul.pagination li {
display: inline;
padding: 8px 16px;
background-color: #fff;
border: 1px solid #ddd;
margin: 0 4px;
cursor: pointer;
}
ul.pagination li.active {
background-color: #4CAF50;
color: white;
border: 1px solid #4CAF50;
}
ul.pagination li.disabled {
color: #ddd;
cursor: not-allowed;
}
</style>
</head>
<body>
<table>
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Age</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>John</td>
<td>25</td>
</tr>
<tr>
<td>2</td>
<td>Jane</td>
<td>30</td>
</tr>
<tr>
<td>3</td>
<td>Bob</td>
<td>40</td>
</tr>
<!-- ... -->
</tbody>
</table>
<ul class="pagination"></ul>
<script>
const table = document.querySelector('table');
const tbody = table.querySelector('tbody');
const rows = Array.from(tbody.querySelectorAll('tr'));
const pageSize = 5; // 每页显示的行数
const pageCount = Math.ceil(rows.length / pageSize); // 总页数
// 生成分页按钮
const pagination = document.querySelector('.pagination');
for (let i = 1; i <= pageCount; i++) {
const li = document.createElement('li');
li.innerText = i;
if (i === 1) {
li.classList.add('active');
}
pagination.appendChild(li);
}
// 处理分页事件
pagination.addEventListener('click', (e) => {
if (e.target.tagName === 'LI' && !e.target.classList.contains('disabled') && !e.target.classList.contains('active')) {
// 根据点击的按钮计算出要显示的行数
const page = parseInt(e.target.innerText);
const start = (page - 1) * pageSize;
const end = start + pageSize;
// 隐藏所有行
rows.forEach(row => row.style.display = 'none');
// 显示当前页的行
for (let i = start; i < end && i < rows.length; i++) {
rows[i].style.display = '';
}
// 更新分页按钮的状态
const active = pagination.querySelector('.active');
active.classList.remove('active');
e.target.classList.add('active');
if (page === 1) {
pagination.querySelector('li:first-child').classList.add('disabled');
} else {
pagination.querySelector('li:first-child').classList.remove('disabled');
}
if (page === pageCount) {
pagination.querySelector('li:last-child').classList.add('disabled');
} else {
pagination.querySelector('li:last-child').classList.remove('disabled');
}
}
});
</script>
</body>
</html>
```
该示例代码实现了一个简单的分页显示数据的效果,每页显示 5 条数据。你可以根据自己的需求调整每页显示的行数和样式。
阅读全文