@AlexsandrLomaev

Почему текстовый узел добавляется только в одну ячейку строки?

Необходимо добавить в таблицу колонки с текстом, например имя возраст и т.д.
Создать я создал, но вот почему создается содержимое только у одной колонки?
Код:

<table class="table">
				<thead>
					<tr>
						<th>Уровень</th>
						<th>Участник</th>
						<th>Клан</th>
						<th>Статус</th>
						<th>Опыт</th>
					</tr>
				</thead>
				<tbody>
					<tr id="wapps">
						<td>34</td>
						<td>Дима</td>
						<td>Las</td>
						<td>Участник</td>
						<td>1</td>
					</tr>
				</tbody>
			</table>


а вот JS

function html_object() {

	let element = document.createElement("tr");
	let wapps = document.getElementById("wapps");
	let cnt = document.createTextNode("Help");

	for (var i = 0; i < 5; i++) {

		let td = document.createElement("td");
		element.appendChild(td);
		td.appendChild(cnt);
	}

	wapps.parentNode.appendChild(element);
	wapps.parentNode.insertBefore(element, wapps);

};

document.getElementById("a").onclick = function () {
	html_object();
};
  • Вопрос задан
  • 94 просмотра
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
Комментировать
enkryptor
@enkryptor
software developer (TS/JS, C#), Agile enthusiast
for (var i = 0; i < 5; i++) {
    let td = document.createElement("td");
    element.appendChild(td);
    td.appendChild(cnt);
  }
Нельзя вставить одну и ту же ноду в несколько родителей.

Вместо этого нужно создавать новую ноду в каждой итерации цикла:
for (var i = 0; i < 5; i++) {
    let td = document.createElement("td");
    element.appendChild(td);
    let node = document.createTextNode("Help");
    td.appendChild(node);
  }


Подробнее см. ссылку от 0xD34F:
узел не может находиться в двух точках документа одновременно.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы