当前位置:首页 > JavaScript

js实现可变列

2026-04-07 07:31:42JavaScript

实现可变列的方法

动态添加列

使用JavaScript动态创建表格列可以通过操作DOM实现。以下是一个示例代码片段,展示如何向表格添加新列:

function addColumn(tableId) {
  const table = document.getElementById(tableId);
  const rows = table.getElementsByTagName('tr');

  for (let i = 0; i < rows.length; i++) {
    const newCell = rows[i].insertCell(-1);
    newCell.innerHTML = `Column ${i+1}`;
  }
}

动态删除列

要删除特定列,需要遍历表格的所有行并移除指定位置的单元格:

function deleteColumn(tableId, columnIndex) {
  const table = document.getElementById(tableId);
  const rows = table.getElementsByTagName('tr');

  for (let i = 0; i < rows.length; i++) {
    rows[i].deleteCell(columnIndex);
  }
}

使用数据绑定框架

现代前端框架如React、Vue或Angular可以更高效地处理可变列。以下是React示例:

function DynamicTable({ columns, data }) {
  return (
    <table>
      <thead>
        <tr>
          {columns.map((col, index) => (
            <th key={index}>{col.header}</th>
          ))}
        </tr>
      </thead>
      <tbody>
        {data.map((row, rowIndex) => (
          <tr key={rowIndex}>
            {columns.map((col, colIndex) => (
              <td key={colIndex}>{row[col.accessor]}</td>
            ))}
          </tr>
        ))}
      </tbody>
    </table>
  );
}

响应式列调整

结合CSS和JavaScript可以实现响应式列布局。使用媒体查询和动态类名切换:

function adjustColumns() {
  const table = document.getElementById('responsiveTable');
  const width = window.innerWidth;

  if (width < 768) {
    table.classList.add('mobile-view');
  } else {
    table.classList.remove('mobile-view');
  }
}

虚拟滚动优化

对于大量数据的可变列,实现虚拟滚动可以提高性能:

function setupVirtualScroll(tableId, rowHeight, visibleRows) {
  const table = document.getElementById(tableId);
  const tbody = table.querySelector('tbody');
  tbody.style.height = `${rowHeight * visibleRows}px`;

  window.addEventListener('scroll', () => {
    const scrollTop = window.pageYOffset;
    const startRow = Math.floor(scrollTop / rowHeight);
    const endRow = startRow + visibleRows;

    // 更新可见行数据
  });
}

列拖拽排序

实现可拖拽调整列顺序的功能:

js实现可变列

function makeColumnsDraggable(tableId) {
  const table = document.getElementById(tableId);
  const headers = table.querySelectorAll('th');

  headers.forEach(header => {
    header.setAttribute('draggable', true);

    header.addEventListener('dragstart', e => {
      e.dataTransfer.setData('text/plain', header.cellIndex);
    });

    header.addEventListener('dragover', e => e.preventDefault());

    header.addEventListener('drop', e => {
      e.preventDefault();
      const fromIndex = e.dataTransfer.getData('text/plain');
      const toIndex = header.cellIndex;

      if (fromIndex !== toIndex) {
        swapColumns(table, fromIndex, toIndex);
      }
    });
  });
}

标签: js
分享给朋友:

相关文章

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounce…

js实现驼峰

js实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…

js手势实现

js手势实现

手势识别实现方法 在JavaScript中实现手势识别通常涉及监听触摸事件(touchstart、touchmove、touchend)或鼠标事件(mousedown、mousemove、mouseu…

js实现自举

js实现自举

实现 JavaScript 自举的方法 JavaScript 自举(Bootstrap)通常指通过 JavaScript 动态加载自身或依赖的脚本,实现运行时环境的初始化或扩展。以下是几种常见实现方式…

js实现跑马灯

js实现跑马灯

实现跑马灯效果 使用HTML和JavaScript可以轻松实现跑马灯效果。以下是两种常见的实现方式: HTML结构 <div id="marquee"> <span>…

js实现轮播代码

js实现轮播代码

基础轮播实现 使用HTML、CSS和JavaScript创建一个简单的轮播效果。HTML部分定义轮播容器和图片元素。 <div class="carousel"> <div c…