从假数据到动态表格:一个简单的JavaScript和HTML示例

一、背景介绍

在Web开发中,我们经常需要处理和展示数据。有时,这些数据是真实的,但有时它们可能是假的(例如,为了演示或测试目的)。本文将向您展示如何使用假数据创建一个动态的HTML表格,并使用JavaScript为其添加交互功能。

二、创建假数据

首先,我们需要一些假数据。在JSON格式中,我们可以创建一个简单的对象,其中包含多个项目,每个项目都有一个ID、名称和类型。以下是一个示例:

javascript 复制代码
{  
  "items": [  
    {  
      "id": 1,  
      "name": "Item 1",  
      "type": "Type A"  
    },  
    {  
      "id": 2,  
      "name": "Item 2",  
      "type": "Type B"  
    },  
    // ... 更多数据  
  ]  
}

三、创建HTML表格

接下来,我们需要创建一个HTML表格来显示这些数据。在表格中,我们为每个项目添加一个行(<tr>),其中包含三个单元格(<td>):一个用于显示ID,一个用于显示名称,另一个用于显示类型。

由于我们希望每页显示10条数据,我们将在JavaScript中实现分页逻辑。同时,我们还将添加一个搜索框、一个重置按钮和两个筛选按钮,以允许用户根据名称和类型筛选数据。

首先,我们需要一个HTML文件来布局表格和按钮。这里是一个简单的HTML模板:

html 复制代码
<!DOCTYPE html>  
<html lang="en">  
<head>  
    <meta charset="UTF-8">  
    <meta name="viewport" content="width=device-width, initial-scale=1.0">  
    <title>假数据表格</title>  
    <link rel="stylesheet" href="styles.css"> <!-- 引入CSS样式表 -->  
</head>  
<body>  
    <input type="text" id="search-input" onkeyup="filterTable()" placeholder="搜索名称"> <!-- 搜索框 -->  
    <button onclick="resetFilter()">重置</button> <!-- 重置按钮 -->  
    <button onclick="filterByType('Type A')">Type A</button> <!-- 按类型筛选按钮 -->  
    <button onclick="filterByType('Type B')">Type B</button> <!-- 按类型筛选按钮 -->  
    <table id="data-table">  
        <thead>  
            <tr>  
                <th>ID</th>  
                <th>名称</th>  
                <th>类型</th>  
            </tr>  
        </thead>  
        <tbody id="table-body">  
            <!-- 数据将在此处动态添加 -->  
        </tbody>  
    </table>  
  
    <script src="script.js"></script> <!-- 引入JavaScript脚本 -->  
</body>  
</html>

然后,我们需要一个CSS文件(styles.css)来美化表格和按钮:

css 复制代码
/* styles.css */  
body {  
    font-family: Arial, sans-serif;  
}  
  
input[type="text"] {  
    padding: 5px;  
    width: 200px;  
}  
  
table {  
    width: 100%;  
    border-collapse: collapse;  
}  
  
th, td {  
    border: 1px solid #ddd;  
    padding: 8px;  
    text-align: left;  
}  
  
th {  
    background-color: #f2f2f2;  
}  
  
button {  
    padding: 8px 16px;  
    font-size: 16px;  
    margin-bottom: 10px;  
}

最后,我们需要一个JavaScript文件(script.js)来处理数据过滤和表格的动态更新:

javascript 复制代码
// script.js  
// 假设这是从服务器获取的数据,或者您可以将其替换为从localStorage等获取数据的逻辑  
const items = [  
    { id: 1, name: 'Item 1', type: 'Type A' },  
    { id: 2, name: 'Item 2', type: 'Type B' },  
    // ... 更多数据项  
];  
  
// 初始化表格  
function initTable() {  
    const tableBody = document.getElementById('table-body');  
    tableBody.innerHTML = ''; // 清空表格内容  
    items.forEach((item, index) => {  
        if (index < 10) { // 每页默认显示10条数据  
            const row = document.createElement('tr');  
            row.innerHTML = `  
                <td>${item.id}</td>  
                <td>${item.name}</td>  
                <td>${item.type}</td>  
            `;  
            tableBody.appendChild(row);  
        }  
    });  
}  
  
// 根据名称搜索过滤表格  
function filterTable() {  
    const input = document.getElementById('search-input');  
    const filter = input.value.toUpperCase();  
    const table = document.getElementById('data-table');  
    const rows = table.getElementsByTagName('tr');  
  
    for (let i = 1; i < rows.length; i++) { // 从第二行开始(跳过表头)  
        const name = rows[i].getElementsByTagName('td')[1].innerText.toUpperCase();  
        if (name.indexOf(filter) > -1) {  
            rows[i].style.display = '';  
        } else {  
            rows[i].style.display = 'none';  
        }  
    }  
}  
  
// 重置表格到初始状态  
function resetFilter() {  
    initTable(); // 重新初始化表格  
    document.getElementById('search-input').value = ''; // 清空搜索框  
}  
  
// 根据

四、总结

通过结合假数据、HTML、CSS和JavaScript,我们可以创建一个功能强大且动态的表格。这个表格可以根据用户的需求进行过滤和排序,提供更好的用户体验。此外,由于我们使用的是假数据,这使得在开发过程中不需要担心数据的完整性和准确性。这种方法对于原型设计、演示或测试非常有用。

相关推荐
云飞云共享云桌面26 分钟前
8位机械工程师如何共享一台图形工作站算力?
linux·服务器·网络
前端青山2 小时前
Node.js-增强 API 安全性和性能优化
开发语言·前端·javascript·性能优化·前端框架·node.js
从兄4 小时前
vue 使用docx-preview 预览替换文档内的特定变量
javascript·vue.js·ecmascript
幺零九零零4 小时前
【C++】socket套接字编程
linux·服务器·网络·c++
清灵xmf5 小时前
在 Vue 中实现与优化轮询技术
前端·javascript·vue·轮询
free5 小时前
netstat中sendq/recvq用于排查发送端发送数据的问题
服务器
力姆泰克5 小时前
看电动缸是如何提高农机的自动化水平
大数据·运维·服务器·数据库·人工智能·自动化·1024程序员节
力姆泰克5 小时前
力姆泰克电动缸助力农业机械装备,提高农机的自动化水平
大数据·服务器·数据库·人工智能·1024程序员节
程思扬6 小时前
为什么Uptime+Kuma本地部署与远程使用是网站监控新选择?
linux·服务器·网络·经验分享·后端·网络协议·1024程序员节
sun0077006 小时前
拷贝 cp -rdp 和 cp -a
linux·运维·服务器