Javascript 使用domjs删除tr标记
我在js中创建了一个函数,该函数使用DOM方法创建一个表,然后添加了一些按钮,该按钮应删除相应的行。你能帮我建立一个删除行的函数吗? 这是我的密码Javascript 使用domjs删除tr标记,javascript,html,dom,Javascript,Html,Dom,我在js中创建了一个函数,该函数使用DOM方法创建一个表,然后添加了一些按钮,该按钮应删除相应的行。你能帮我建立一个删除行的函数吗? 这是我的密码 function creaTable(a, b) { var tableDiv = document.getElementById("myDynamicTable"); var tbl = document.createElement('table'); tbl.setAttribute("id", "tabella"); var t
function creaTable(a, b) {
var tableDiv = document.getElementById("myDynamicTable");
var tbl = document.createElement('table');
tbl.setAttribute("id", "tabella");
var tbdy = document.createElement('tbody');
tbl.appendChild(tbdy);
tbl.border = '1';
for (var j = 0; j < a ; j++) {
var tr = document.createElement('tr');
tbdy.appendChild(tr);
var btnDelete = document.createElement('input');
btnDelete.setAttribute("type", "button");
btnDelete.setAttribute("value", "-");
// btnDelete.setAttribute("onclick", "delete(tr)");
tr.appendChild(btnDelete);
for (var k = 0; k < b ; k++) {
var td = document.createElement('td');
td.width = '75';
td.appendChild(document.createTextNode("Cella "+j+","+k));
tr.appendChild(td);
}
}
tableDiv.appendChild(tbl);
}
可创建的函数(a、b){
var tableDiv=document.getElementById(“myDynamicTable”);
var tbl=document.createElement('table');
tbl.setAttribute(“id”、“tabella”);
var tbdy=document.createElement('tbody');
tbl.附加儿童(tbdy);
tbl.border='1';
对于(var j=0;j
您只需要一个函数.remove()
str
。对于块作用域而不是函数作用域,请确保使用const
而不是var
,因为您处于:
您也可以直接指定给元素的属性,而不是setAttribute
——这样,它看起来更干净
//------------------------------------------------------------------
可创建的函数(a、b){
var tableDiv=document.getElementById(“myDynamicTable”);
var tbl=document.createElement(“表”);
tbl.setAttribute(“id”、“tabella”);
var tbdy=document.createElement(“tbody”);
tbl.附加儿童(tbdy);
tbl.border=“1”;
对于(var j=0;j这是btn元素
设tr=this.closest(“tr”);
//移除该元素
tr.remove();
}
谢谢。但这样我们只删除最后一行,如何删除按钮附近的特定行?您是否确保使用const tr
而不是var tr
?如果使用var
,变量tr
将是函数范围而不是块范围,因此到最后,tr
将引用最后一行,而不是每个迭代都有一个单独的绑定。我正在尝试在传统函数中转换箭头函数。你能帮我吗?因为我对js不是很在行,而且我还没有研究箭头函数。这里的箭头函数和箭头函数一样,箭头函数更简洁.onclick=function(){tr.remove();}代码>或,使用.onclick=tr.remove.bind(tr)
可能重复的
// ...
const tr = document.createElement('tr');
tbdy.appendChild(tr);
const btnDelete = document.createElement('input');
btnDelete.type = "button";
btnDelete.value = "-";
btnDelete.onclick = () => tr.remove();
// ...
//------------------------------------------------------------------
function creaTable(a, b) {
var tableDiv = document.getElementById("myDynamicTable");
var tbl = document.createElement("table");
tbl.setAttribute("id", "tabella");
var tbdy = document.createElement("tbody");
tbl.appendChild(tbdy);
tbl.border = "1";
for (var j = 0; j < a; j++) {
var tr = document.createElement("tr");
tbdy.appendChild(tr);
var btnDelete = document.createElement("input");
btnDelete.setAttribute("type", "button");
btnDelete.setAttribute("value", "-");
// register the btn to start a function on click
btnDelete.addEventListener("click", deleteMyTr);
tr.appendChild(btnDelete);
for (var k = 0; k < b; k++) {
var td = document.createElement("td");
td.width = "75";
td.appendChild(document.createTextNode("Cella " + j + "," + k));
tr.appendChild(td);
}
}
tableDiv.appendChild(tbl);
}
creaTable(5, 6);
// delete function
function deleteMyTr() {
// get the closest tr -> this is the btn element
let tr = this.closest("tr");
// remove the element
tr.remove();
}