javascript - 克隆后如何禁用原始删除按钮也为 id 文本框自动递增
问题描述
我有克隆行代码,其中包括文本框和删除按钮,我只想在克隆后禁用原始删除按钮,我还需要 id 文本框在克隆时自动增加
function tablerow(addRow) {
var table = document.getElementById('tablebody');
var row = document.getElementById('tablerow');
var clone = row.cloneNode(true);
clone.id = "newid";
var InputType = clone.getElementsByTagName('input');
for (var i = 0; i < InputType.length; i++) {
InputType[i].value = '';
}
table.appendChild(clone);
}
function deleteRow(delRow){
while (delRow.parentNode && delRow.tagName.toLowerCase() != 'tr') {
delRow = delRow.parentNode;
}
if (delRow.parentNode && delRow.parentNode.rows.length > 1) {
delRow.parentNode.removeChild(delRow);
}
}
<button type="button" onclick="tablerow()">Add</button>
<table>
<tbody id="tablebody">
<tr id="tablerow">
<td><input type="text" value="1" disabled/></td>
<td><input type="text"/></td>
<td><button type="button"/>Delete</button onClick="deleteRow(this)"></td>
</tr>
</tbody>
</table>
解决方案
这是一个混合的 JS/CSS 解决方案
function tablerow(addRow) {
var table = document.getElementById('tablebody');
var row = document.getElementById('tablerow');
var clone = row.cloneNode(true);
clone.id = "newid";
[...clone.querySelectorAll('input')].forEach(inp => {
if (inp.classList.contains("del")) inp.classList.remove("first")
else inp.value = "";
})
table.appendChild(clone);
}
window.addEventListener("load", function() {
document.getElementById("add").addEventListener("click", function() {
tablerow()
})
document.getElementById("tablebody").addEventListener("click", function(e) {
var tgt = e.target;
if (tgt.classList.contains("del")) tgt.closest("tr").remove()
})
})
.first {
visibility: hidden;
pointer-events: none;
}
<button type="button" id="add">Add</button>
<table>
<tbody id="tablebody">
<tr id="tablerow">
<td><input type="text" value="1" disabled/></td>
<td><input type="text" /></td>
<td><input type="button" class="del first" value="Delete" /></td>
</tr>
</tbody>
</table>
推荐阅读
- python - 如何使用 matplotlib 绘制带有斜线网格的散点图?
- excel - 使用公式加速 If Then 语句的 VBA 代码
- javascript - 如何确保我的 log4j 在我的单元测试中被调用一次
- c# - 如何解析 ModelBindingExecutionContext 是一种类型,但像变量一样使用
- python - Pandas 数据框到 numpy 数组
- python - python 3,OSError:[Errno 22] 无效参数:
- java - 为什么Java的List有“List.toArray()”,而数组没有“Array.toList()”?
- tla+ - 在 TLA+ 中使用模块重载实现哈希函数
- wordpress - 在 Docker for Windows 上开发 wordpress 站点
- python - 来自张量流的可重复结果