Флажки (в общем случае input
элементы) не имеют содержимого (они пустые элементы ), поэтому innerText
и textContent
и innerHTML
не имеют никакой функции вотношение к ним.
Если вы хотите, чтобы текст рядом с вашим флажком, обычно нужно обернуть label
вокруг него.В разметке это будет выглядеть следующим образом:
<label>
<input type="checkbox">
Text
</label>
Корректируя свой код, вы можете сделать:
// ...
let td = document.createElement('td')
let div = document.createElement('div')
let label = document.createElement('label') // *** (added)
label.innerText = 'Tag' // *** (moved and modified)
let cb = document.createElement('input')
div.className = 'checkContainer'
cb.id = 'checkTd'
cb.type = 'checkbox'
label.insertBefore(cb, label.firstChild); // *** (added)
div.appendChild(label) // *** (modified)
// ...
Тем не менее, через разметку будет намного проще (tr.innerHTML = ...
), ибраузеры имеют очень быструю разметку для разбора.
// ...
let tr = document.createElement('tr')
tr.innerHTML = `
<td>
<div class="checkContainer">
<label>
<input type="checkbox" id="checkTd">
Tag
</label>
</div>
</td>`;
tbdy.appendChild(tr)
// ...
Примечание: в настоящее время ваш код создает несколько элементов input
с одинаковыми id
(checkTd
).Это неверно, только один элемент в документе может иметь этот id
.В зависимости от того, что вы делаете, вам может вообще не понадобиться id
, или вам может понадобиться добавить к нему суффикс (возможно, используя i
), чтобы сделать его уникальным.