



// 简单的伪代码示例 document.getElementById('mytable').addEventListener('mouseover', function(e) { const targetCell = e.target.closest('td[data-tooltip]'); if (targetCell) { // 清除之前的定时器,防止快速移动鼠标时出现问题 clearTimeout(this.tooltipTimeout); this.tooltipTimeout = setTimeout(() => { let tooltip = document.getElementById('myTooltip'); if (!tooltip) { tooltip = document.createElement('div'); tooltip.id = 'myTooltip'; tooltip.classList.add('tooltip-style'); // 预设css样式 document.body.appendChild(tooltip); } tooltip.textContent = targetCell.dataset.tooltip; // 根据targetCell的位置计算tooltip的位置 const rect = targetCell.getBoundingClientRect(); tooltip.style.left = `${rect.left + window.scrollX}px`; tooltip.style.top = `${rect.bottom + window.scrollY + 5}px`; // 稍微偏下 tooltip.style.display = 'block'; tooltip.style.opacity = '1'; }, 200); // 200ms 延迟显示 } }); document.getElementById('myTable').addEventListener('mouseout', function(e) { // 鼠标移出时立即隐藏,或者也加个小延迟 clearTimeout(this.tooltipTimeout); const tooltip = document.getElementById('myTooltip'); if (tooltip) { tooltip.style.opacity = '0'; // 延迟display: none,给CSS transition留时间 setTimeout(() => tooltip.style.display = 'none', 300); } });
// 假设你有表格数据 const tableData = [ { product: 'A', stock: 10, price: 100 }, { product: 'B', stock: 3, price: 50 }, // 低库存 { product: 'C', stock: 20, price: 200 } ]; function renderTable(data) { const tableBody = document.querySelector('#myTable tbody'); tableBody.innerhtml = ''; // 清空现有内容 data.forEach(item => { const row = tableBody.insertRow(); const stockCell = row.insertCell(); stockCell.textContent = item.stock; if (item.stock < 5) { // 假设库存小于5是异常 stockCell.classList.add('low-stock-alert'); } // ... 其他单元格 }); } // CSS中定义 .low-stock-alert { background-color: #ffe0e0; color: #d32f2f; }
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END