【发布时间】:2018-05-24 12:06:57
【问题描述】:
这与我所拥有的类似:
var btn = document.querySelector('button');
btn.addEventListener('click', function() {
var tdCollection = document.querySelectorAll('td');
for (var i = 0; i < tdCollection.length; i++) {
var field = document.createElement('input');
field.setAttribute('type', 'text');
field.setAttribute('name', 'Field');
field.setAttribute('value', tdCollection[i].textContent);
tdCollection[i].innerHTML = "";
tdCollection[i].appendChild(field);
}
});
td {
border: 1px solid black;
}
<table>
<tr>
<td>A very long text</td>
<td>tinyTxt</td>
</tr>
<tr>
<td>A very long text</td>
<td>tinyTxt</td>
</tr>
</table>
<button name="edit">Edit</button>
我希望表格单元格即使在按下“编辑”按钮后也能保持其原始宽度。将输入字段宽度设置为其父单元格之一将是理想的,但如果无法将字段宽度固定为单元格宽度,也可以将字段宽度调整为其值并使用overflow: hidden。
感谢您的帮助:D
编辑
我试图保留每列的自然宽度,如果有办法,我想避免每列的宽度必须相等。
【问题讨论】:
-
问题在于输入元素。在您的 CSS 中设置输入的宽度,即 input { width: 2em;} 看看是否有帮助。
-
@jeff 我认为这不太理想,有些列的全名等长文本,而其他列只有一个数字,因此单元格的宽度已经非常不同。这就是为什么我一直在寻找一种方法来定义输入字段相对于其父单元格的宽度。
-
看看这个例子。这一切都在 CSS 中。 codepen.io/rhroyston/pen/dXdPEx
-
@RonRoyston 您的示例使所有列的宽度与
table-layout:fixed;相等,我试图保留每列的自然宽度。 -
在这个例子中哪里有输入元素?
标签: javascript html css html-table html-input