我无法将此内循环缩短我的代码。节点类型给定错误

时间:2019-05-16 10:32:19

标签: javascript appendchild

我正在尝试将此代码添加到for循环中,但它给了我以下错误

  

“无法在“节点”上执行“ appendChild”:参数1不是类型   “节点””

let tableBody = document.querySelector('#table tbody');    

let row1 = document.createElement('tr');
let row2 = row1.cloneNode(true);
let row3 = row1.cloneNode(true);
let row4 = row1.cloneNode(true);
let row5 = row1.cloneNode(true);

tableBody.appendChild(row1);
tableBody.appendChild(row2);
tableBody.appendChild(row3);
tableBody.appendChild(row4);
tableBody.appendChild(row5);

我正在尝试这样

for(i = 1; i <=5; i++){
  tableBody.appendChild('row' + i);
}

3 个答案:

答案 0 :(得分:0)

您没有附加实际对象。您要附加一个字符串。

尝试一下:

let tableBody = document.querySelector('#table tbody');    

let rows = []
rows.push(document.createElement('tr'));
rows.push(rows[0].cloneNode(true));
rows.push(rows[0].cloneNode(true));
rows.push(rows[0].cloneNode(true));
rows.push(rows[0].cloneNode(true));

rows.forEach(row => {
  tableBody.appendChild(row);
})

答案 1 :(得分:0)

您的代码tableBody.appendChild('row' + i);不起作用的原因'row' + i只是一个sting,它不是一个包含节点的变量, 将所有行放入数组并从那里添加

尝试

let tableBody = document.querySelector('#table tbody');    

let rows=[];
rows.push(document.createElement('tr'));
rows.push(row1.cloneNode(true));
rows.push(row1.cloneNode(true));
rows.push(row1.cloneNode(true));
rows.push(row1.cloneNode(true));


for(i = 0 ; i <rows.length; i++){
  tableBody.appendChild(row[i]);
}

建议阅读:数组,变量,函数

答案 2 :(得分:0)

appendChild使用DOM节点对象(https://developer.mozilla.org/en-US/docs/Web/API/Node/appendChild),正如其他人所提到的,您正在提供一个字符串。

您似乎想创建一个包含5行的表,如果是这样,您可以按照以下方式进行操作:

for(i = 1; i <=5; i++){
  tableBody.appendChild(document.createElement('tr'));
}