我正在尝试使其正常工作。首先,我创建一个新的tr
和td
,然后将其删除。第一次效果很好,但是如果我有几个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);
});
答案 0 :(得分:0)
仅从您的JavaScript看来,它试图一遍又一遍地删除同一子级(myTr
),即使已将其删除。
以下是两种可能的解决方案,具体取决于您的实际需求:
在调用myTr
list.removeChild(myTr)
如果要删除的孩子始终是第一个或最后一个孩子,请使用list.children().first().remove()
或list.children().last().remove()
。