Создание флажка динамически с использованием JavaScript?
Я пытаюсь создать флажок динамически, используя следующий HTML/JavaScript. Любые идеи, почему это не работает?
<div id="cb"></div>
<script type="text/javascript">
var cbh = document.getElementById('cb');
var val = '1';
var cap = 'Jan';
var cb = document.createElement('input');
cb.type = 'checkbox';
cbh.appendChild(cb);
cb.name = val;
cb.value = cap;
cb.appendChild(document.createTextNode(cap));
</script>
Ответы
Ответ 1
Вы пытаетесь поместить текст node внутри входного элемента.
Элементы ввода пустые и не могут иметь детей.
...
var checkbox = document.createElement('input');
checkbox.type = "checkbox";
checkbox.name = "name";
checkbox.value = "value";
checkbox.id = "id";
var label = document.createElement('label')
label.htmlFor = "id";
label.appendChild(document.createTextNode('text for label after checkbox'));
container.appendChild(checkbox);
container.appendChild(label);
Ответ 2
Последняя строка должна читать
cbh.appendChild(document.createTextNode(cap));
Добавление текста (метки?) в тот же контейнер, что и флажок, а не флажок
Ответ 3
Вы можете создать функцию:
function changeInputType(oldObj, oTyp, nValue) {
var newObject = document.createElement('input');
newObject.type = oTyp;
if(oldObj.size) newObject.size = oldObj.size;
if(oldObj.value) newObject.value = nValue;
if(oldObj.name) newObject.name = oldObj.name;
if(oldObj.id) newObject.id = oldObj.id;
if(oldObj.className) newObject.className = oldObj.className;
oldObj.parentNode.replaceChild(newObject,oldObj);
return newObject;
}
И вы вызываете:
changeInputType(document.getElementById('DATE_RANGE_VALUE'), 'checkbox', 7);
Ответ 4
/* Комментарий: работал для меня */
</div>
<script type="text/javascript">
var hold = document.getElementById("divid");
var checkbox = document.createElement('input');
checkbox.type = "checkbox";
checkbox.name = "chkbox1";
checkbox.id = "cbid";
var label = document.createElement('label');
var tn = document.createTextNode("Not A RoBot");
label.htmlFor="cbid";
label.appendChild(tn);
hold.appendChild(label);
hold.appendChild(checkbox);
</script>