var table = document.getElementById("myTable"); var imageColumnIndices = [8, 9, 10,11,12,13]; // 指定要添加图片按钮的列索引数组 function addRow() { var newRow = table.insertRow(); var cellsCount = table.rows[0].cells.length; for (var i = 0; i < cellsCount; i++) { var newCell = newRow.insertCell(); newCell.contentEditable = true; if (imageColumnIndices.includes(i)) { var newInput = document.createElement("input"); newInput.type = "file"; newInput.onchange = function() { previewImage(this); }; newInput.onclick = function() { showPopup(this.src); }; newCell.appendChild(newInput); // 点击事件监听器,点击图片按钮时弹出放大图片的弹出窗口 newInput.onclick = function () { showPopup(this.src); }; }else { newCell.innerHTML = "新单元格"; // 将空余按钮的单元格内容设置为默认值 } } } function addColumn() { var cellsCount = table.rows[0].cells.length; var colgroup = table.getElementsByTagName("colgroup")[0]; var col = document.createElement("col"); col.style.width = "100px"; colgroup.appendChild(col); for (var i = 0; i < table.rows.length; i++) { var newCell = table.rows[i].insertCell(); newCell.contentEditable = true; newCell.innerHTML = "新单元格"; } updateColWidths(); }我使用固定列宽,在使用上面代码新增行后,列宽发生变化,实际我需要 列宽保持我设置的列宽不发生变化
时间: 2024-04-17 12:26:01 浏览: 83
IE6/7/8/9中Table/Select的innerHTML不能赋值的解决方法
根据你提供的代码,我看到你使用了`addColumn()`和`addRow()`函数来动态添加列和行到表格中。然而,这些函数并没有包含列宽的设置,所以当你添加新的列或行时,它们会继承默认的列宽样式(100px)。
如果你希望新添加的列保持之前设置的列宽,你可以在`addColumn()`函数中添加设置列宽的代码。在`for`循环之前,你可以使用以下代码为新的单元格设置样式:
```javascript
newCell.style.width = col.style.width;
```
这样,新添加的单元格将继承相应列的宽度样式。
另外,你可以在`addRow()`函数中添加类似的代码来保持列宽的一致性。在`if (imageColumnIndices.includes(i))`条件分支的外面,你可以添加以下代码:
```javascript
newCell.style.width = table.rows[0].cells[i].style.width;
```
这样,新添加的单元格将继承相应列的宽度样式。
请注意,以上代码假设你在`addColumn()`函数中已经正确设置了列宽,并且在`table.rows[0].cells[i].style.width`中存储了正确的列宽值。
通过在添加新列和新行时设置单元格的样式,你可以确保新添加的单元格保持之前设置的列宽。
阅读全文