如何在乘法表中删除Child

时间:2018-09-19 06:04:18

标签: javascript html

我正在尝试使其正常工作。首先,我创建一个新的trtd,然后将其删除。第一次效果很好,但是如果我有几个tr,我只会不断收到此错误:

  

main2.js:16未捕获的TypeError:无法在“节点”上执行“ removeChild”:参数1的类型不是“节点”。
      在HTMLTableSectionElement。

正如我所说,删除第一行非常有用。

function addReport(){
  addTr();
  for(var i = 0; i < reportForm.length; i++){
    if(reportForm[i].name == 'project' || reportForm[i].name == 'activity' || reportForm[i].type == 'text' || reportForm[i].name == 'note'){
      var newTd = document.createElement('td');
      newTd.textContent = reportForm[i].value;
      newTr.appendChild(newTd);
    } 
  }
  addEdit();
  report.reset();
};



function addTr(){
  newTr = document.createElement('tr');
  newTr.setAttribute('id', 'myTr');
  list.appendChild(newTr);
}

function addEdit() {
  var remove = document.createElement('td');
  remove.textContent = 'Ta bort';
  newTr.appendChild(remove);

  var edit = document.createElement('td');
  edit.textContent = 'Redigera';
  newTr.appendChild(edit);
}


/*------------------DELETE REPORT--------------------------*/
list.addEventListener('click', function(e){
  list.removeChild(myTr);
});

1 个答案:

答案 0 :(得分:0)

仅从您的JavaScript看来,它试图一遍又一遍地删除同一子级(myTr),即使已将其删除。

以下是两种可能的解决方案,具体取决于您的实际需求:

  • 在调用myTr

  • 之前将正确的元素分配给list.removeChild(myTr)
  • 如果要删除的孩子始终是第一个或最后一个孩子,请使用list.children().first().remove()list.children().last().remove()