



// 简单的伪代码示例
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; }