如何使用JavaScript实现表格操作功能?

我想使用JavaScript来实现一些表格操作功能,比如增加、删除、编辑和排序等。我已经创建了一个表格,但是不知道如何在JavaScript中操作表格。我希望能够通过JavaScript添加一行或者删除一行,并且在编辑模式下可以实时修改表格中的数据。还希望能够对表格进行排序,让用户可以按照表格中某一列的值来进行排序。是否有人能为我提供一些Javascript的代码示例或者指导?非常感谢!

提问时间:2023-06-27 23:08:54 编辑时间:2023-06-27 23:08:56 提问者: 灵魂逐梦
  • 红心如夜
    2

    有几种方式可以使用JavaScript实现表格操作功能。以下是其中一种方式:

    增加行:

    var tableRef = document.getElementById('myTable').getElementsByTagName('tbody')[0];
    var newRow = tableRef.insertRow(tableRef.rows.length);
    var newCell1 = newRow.insertCell(0);
    var newCell2 = newRow.insertCell(1);
    newCell1.innerHTML = 'New Cell 1'; // 可以根据需要添加新的单元格
    newCell2.innerHTML = 'New Cell 2';
    

    删除行:

    var tableRef = document.getElementById('myTable').getElementsByTagName('tbody')[0];
    tableRef.deleteRow(rowToDelete);
    

    排序行:

    function sortTable(table, column, asc = true) {
      const dirModifier = asc ? 1 : -1;
      const rows = Array.from(table.querySelectorAll("tr"));
      const sortedRows = rows.sort((a, b) => {
        const aColText = a.querySelector(`td:nth-child(${column + 1})`).textContent.trim();
        const bColText = b.querySelector(`td:nth-child(${column + 1})`).textContent.trim();
        return aColText > bColText ? (1 * dirModifier) : (-1 * dirModifier);
      });
      table.innerHTML = '';
      table.appendChild(table.querySelector('thead'));
      sortedRows.forEach(row => table.appendChild(row));
    }
    
    const myTable = document.querySelector('#myTable');
    
    myTable.querySelectorAll('th').forEach((header, index) => {
      header.addEventListener('click', () => {
        sortTable(myTable, index, !header.classList.contains('asc'));
        header.classList.toggle('asc');
        header.classList.toggle('desc');
      });
    });
    

    你还可以在编辑模式下使用 contenteditable 属性来实现实时编辑。例如:

    <td contenteditable='true'>Some cell text</td>
    
    回答时间:2023-06-27 23:09:00