Такой вопрос у меня сегодня появился.
У меня есть функция, которая создает строки в таблице, используя цикл. То-есть в функцию приходит количество строк, и функция циклом создает строки. Но эти строки нужно добавить, так же по очереди уже в существующую таблицу, в середину. Вот код функции.
function genTr(count) {
for (var i = 0; i < count; i++) {
var tr = document.createElement('tr');
tr.setAttribute('id', 'tr' + i + '_');
if (i == 0) {
$('#tr' + i + '_').insertAfter("#oldtr");
} else {
$('#tr' + i + '_').insertAfter('#tr' + (i-1) + '_');
}
}
id - #oldtr - строка в таблице, после которой нужно цыклом вставлять строки.
В инспекторе ничего нет, строки не вставляються! Может есть решение? Спасибо большое!
Проблема заключается в том, что при получении селектора в виде строки, jQuery ищет элементы, которые уже есть на странице.
Так как создаваемый элемент с id='tr' + i + '_' еще не добавлен на страницу. селектор $('#tr' + i + '_') ничего не найдет, и следовательно ничего никуда не добавит.
Для решения, достаточно заменить строку, на сам созданный элемент:
if (i == 0) {
$(tr).insertAfter("#oldtr");
} else {
$(tr).insertAfter('#tr' + (i-1) + '_');
}
const genTr = count => {
let newTrs = []
let elAfter = document.getElementById('oldTr')
for (let i = 0; i < count; i++) {
let nt = document.createElement('tr');
nt.setAttribute('id', `id-${i}`)
newTrs.push(nt)
}
newTrs.forEach((el) => {
elAfter.after(el)
elAfter = el
})
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей