HTML页面模拟了一个类似Excel的表格在线diy修改表格内容

html实现在线表格编辑,可以修改每个表格内容,并且可以添加行和列

这个HTML页面模拟了一个类似Excel的表格,可以添加和删除行和列,并且可以编辑每个表格的内容。通过点击按钮可以添加新的行和列,通过按钮可以删除最后一行和最后一列。每个单元格都可以通过直接点击并编辑来修改内容。

实现代码

html 复制代码
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Excel-like Table</title>
    <style>
        table {
            border-collapse: collapse;
            table-layout: fixed;
            width: 100%;
        }
        th, td {
            border: 1px solid black;
            padding: 5px;
            text-align: center;
        }
        .addRow, .addColumn, .deleteRow, .deleteColumn {
            margin-bottom: 10px;
        }
        button {
            padding: 5px 10px;
        }
    </style>
</head>
<body>
<div>
    <button class="addRow" onclick="addRow()">添加行</button>
    <button class="addColumn" onclick="addColumn()">添加列</button>
    <button class="deleteRow" onclick="deleteRow()">删除行</button>
    <button class="deleteColumn" onclick="deleteColumn()">删除列</button>
    <button class="saveData" onclick="saveData()">保存数据</button>
</div>
<table id="excelTable">
    <thead>
    <tr>
        <th contenteditable="true"></th>
        <th contenteditable="true">A</th>
        <th contenteditable="true">B</th>
        <th contenteditable="true">C</th>
        <th contenteditable="true">D</th>
    </tr>
    </thead>
    <tbody>
    <tr>
        <th contenteditable="true">1</th>
        <td contenteditable="true"></td>
        <td contenteditable="true"></td>
        <td contenteditable="true"></td>
        <td contenteditable="true"></td>
    </tr>
    <tr>
        <th contenteditable="true">2</th>
        <td contenteditable="true"></td>
        <td contenteditable="true"></td>
        <td contenteditable="true"></td>
        <td contenteditable="true"></td>
    </tr>
    <tr>
        <th contenteditable="true">3</th>
        <td contenteditable="true"></td>
        <td contenteditable="true"></td>
        <td contenteditable="true"></td>
        <td contenteditable="true"></td>
    </tr>
    <tr>
        <th contenteditable="true">4</th>
        <td contenteditable="true"></td>
        <td contenteditable="true"></td>
        <td contenteditable="true"></td>
        <td contenteditable="true"></td>
    </tr>
    </tbody>
</table>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
    function addRow() {
        var table = document.getElementById("excelTable");
        var row = table.insertRow(-1);
        var rowIndex = table.rows.length - 2;
        var cell0 = row.insertCell(0);
        cell0.innerHTML = rowIndex;
        cell0.contentEditable = true;
        for (var i = 1; i < table.rows[1].cells.length; i++) {
            var cell = row.insertCell(i);
            cell.contentEditable = true;
        }
    }
    function addColumn() {
        var table = document.getElementById("excelTable");
        for (var i = 0; i < table.rows.length; i++) {
            var cell = table.rows[i].insertCell(-1);
            cell.contentEditable = true;
            if (i === 0) {
                var columnIndex = table.rows[i].cells.length - 2;
                cell.innerHTML = String.fromCharCode(65 + columnIndex);
                cell.contentEditable = true;
            }
        }
    }
    function deleteRow() {
        var table = document.getElementById("excelTable");
        if (table.rows.length > 2) {
            table.deleteRow(-1);
        }
    }
    function deleteColumn() {
        var table = document.getElementById("excelTable");
        if (table.rows[0].cells.length > 2) {
            for (var i = 0; i < table.rows.length; i++) {
                table.rows[i].deleteCell(-1);
            }
        }
    }
    function saveData() {
        var tableData = [];
        var table = document.getElementById("excelTable");
        var tableHeaders = [];
        for (var i = 0; i < table.rows[0].cells.length; i++) {
            tableHeaders.push(table.rows[0].cells[i].innerHTML);
        }
        tableData.push(tableHeaders);
        for (var i = 1; i < table.rows.length; i++) {
            var rowData = [];
            for (var j = 0; j < table.rows[i].cells.length; j++) {
                rowData.push(table.rows[i].cells[j].innerHTML);
            }
            tableData.push(rowData);
        }
        $.ajax({
            url: "test5.php",
            type: "POST",
            data: { tableData: JSON.stringify(tableData) },
            success: function(response) {
                alert("Data saved successfully!");
            }
        });
    }
</script>
</body>
</html>

使用ajax请求将这个数组传递给名为".php"的文件进行处理。 注意,你需要自己创建一个".php"文件,并在其中编写相应的程序来保存数据。

相关推荐
涔溪6 分钟前
HTML5 实现的圣诞主题网站源码,使用了 HTML5 和 CSS3 技术,界面美观、节日氛围浓厚。
css3·html5·节日
苦夏木禾23 分钟前
js请求避免缓存的三种方式
开发语言·javascript·缓存
超级土豆粉31 分钟前
Turndown.js: 优雅地将 HTML 转换为 Markdown
开发语言·javascript·html
wei_shuo2 小时前
飞算 JavaAI 开发助手:深度学习驱动下的 Java 全链路智能开发新范式
java·开发语言·飞算javaai
熊猫钓鱼>_>2 小时前
用Python解锁图像处理之力:从基础到智能应用的深度探索
开发语言·图像处理·python
GO兔2 小时前
开篇:GORM入门——Go语言的ORM王者
开发语言·后端·golang·go
好开心啊没烦恼2 小时前
Python 数据分析:numpy,抽提,整数数组索引与基本索引扩展(元组传参)。听故事学知识点怎么这么容易?
开发语言·人工智能·python·数据挖掘·数据分析·numpy·pandas
yanwushu3 小时前
10分钟搭建 PHP 开发环境教程
php·laravel
future14123 小时前
C#学习日记
开发语言·学习·c#
king_harry3 小时前
Java程序-OceanBase Connector/J 示例
开发语言