Javascript 使用domjs删除tr标记

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

我在js中创建了一个函数,该函数使用DOM方法创建一个表,然后添加了一些按钮,该按钮应删除相应的行。你能帮我建立一个删除行的函数吗? 这是我的密码

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()
s
tr
。对于块作用域而不是函数作用域,请确保使用
const
而不是
var
,因为您处于:

您也可以直接指定给元素的属性,而不是
setAttribute
——这样,它看起来更干净

  • 可以使用“最近”来查找父元素。 (这在InternetExplorer中不起作用,有关支持的浏览器和详细信息,请参阅)
  • 可以使用节点上的“addEventListener('eventType',{FunctionName})”函数将事件绑定到元素。-你可以读更多,或者。
  • 在tr元件上运行“删除”功能
  • 这是一本书

    //------------------------------------------------------------------
    可创建的函数(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();
        }