Итак, я динамически генерирую checkboxes, используя чистый JS, на основе содержимого в базе данных. Каждый флажок должен располагаться в отдельной строке, и его можно устанавливать или снимать в зависимости от другого значения, полученного из базы данных. Для этого после добавления флажка к div я добавляю тег к div, используя свойство innerHTML. Но теперь проверяемое свойство созданного checkboxes не работает. Он работает, если я удалю часть innerHTML.
Может кто поможет? Вот мой код:
var response = "Code1,Code2";
var arr = response.split(",");
var child = document.getElementById("divone");
Array.prototype.forEach.call(arr, function(a){
var cb = document.createElement('input');
cb.type = 'checkbox';
cb.name = 'FunctionCode';
cb.value = a;
cb.id = a;
cb.checked = true;
var label = document.createElement('label');
label.htmlFor = a;
label.appendChild(document.createTextNode(a));
child.appendChild(cb);
child.appendChild(label);
child.innerHTML = child.innerHTML + "<br />";
});
cb.setAttribute('checked', 'checked'); вместо cb.checked=true будет работать ... или ... child.appendChild(document.createElement('br')) вместо материала innerHTML
Я попробовал child.appendChild (document.createElement ('br')), но это не сработало. Вот почему я перешел на это.
это работает, возможно, вы ошиблись



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


чтобы установить флажок по умолчанию, используйте вместо него defaultChecked = true;:
var response = "Code1,Code2";
var arr = response.split(",");
var child = document.getElementById("divone");
Array.prototype.forEach.call(arr, function(a){
var cb = document.createElement('input');
cb.type = 'checkbox';
cb.name = 'FunctionCode';
cb.value = a;
cb.id = a;
// cb.checked = true;
cb.defaultChecked = 'checked';
var label = document.createElement('label');
label.htmlFor = a;
label.appendChild(document.createTextNode(a));
child.appendChild(cb);
child.appendChild(label);
child.innerHTML = child.innerHTML + "<br />";
});
<div id = "divone"></div>Я не хочу, чтобы он был установлен по умолчанию. Только если выполняется определенное условие, его следует проверять.
вы могли бы добавить условие, например if (something) { cb.defaultChecked ..., и не упомянули ни одного условия в своем вопросе.
заменять
cb.checked = true;
к
cb.setAttribute('checked',true)
демо:
var response = "Code1,Code2";
var arr = response.split(",");
var child = document.getElementById("divone");
Array.prototype.forEach.call(arr, function(a){
var cb = document.createElement('input');
cb.type = 'checkbox';
cb.name = 'FunctionCode';
cb.value = a;
cb.id = a;
// cb.checked = true;
cb.setAttribute('checked',true)
var label = document.createElement('label');
label.htmlFor = a;
label.appendChild(document.createTextNode(a));
child.appendChild(cb);
child.appendChild(label);
child.innerHTML = child.innerHTML + "<br />";
});<div id = "divone"></div>
почему вы используете
Array.prototype.forEach.call(arr... когдаarrявно является реальным массивом?