J'essaie de créer une case à cocher de façon dynamique en utilisant le code HTML/JavaScript suivant. Des idées pourquoi ça ne marche pas?
<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>
Vous essayez de placer un nœud de texte à l'intérieur d'un élément d'entrée.
Les éléments d'entrée sont vides et ne peuvent pas avoir d'enfants.
...
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);
La dernière ligne devrait se lire
cbh.appendChild(document.createTextNode(cap));
Ajouter le texte (label?) Au même conteneur que la case à cocher, pas à la case elle-même
Vous pouvez créer une fonction:
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;
}
Et vous faites un appel comme:
changeInputType(document.getElementById('DATE_RANGE_VALUE'), 'checkbox', 7);