Para crear elementos de manera dinámica, tienes que usar el método
createElement, pero como deseas ir variando la cantidad de elementos a crear, vas borrando los que hayan con el método
removeChild.
Un pequeño ejemplo:
Código Javascript
:
Ver originalvar combo = document.getElementById("combo"),
almacen = document.getElementById("almacen");
combo.addEventListener("change", function(){
var valor = this.value,
cajas = almacen.getElementsByTagName("input"),
totalCajas = cajas.length;
if (almacen.hasChildNodes)
while (almacen.childNodes.length)
almacen.removeChild(almacen.firstChild);
for (i = 0; i < valor; i++){
var caja = document.createElement("input");
caja.type = "text";
caja.style.display = "block";
almacen.appendChild(caja);
}
}, false);
Al combo del documento, le asigno el evento
change, para que cuando se elija una opción, se realice un conjunto de instrucciones, aglomeradas en una función. En dicha función, tomo el valor seleccionado en el combo, la cantidad de cajas que existan en la sección
almacen y el total de cajas existentes. Con el método
hasChildNodes, verifico que la sección
almacen contenga elementos, de ser así, me apoyo en un bucle para ir eliminándolos uno a uno. Los elementos se eliminan desde el primero hasta el último, por lo que en cada iteración, iré eliminando siempre el primer elemento ya que al eliminar uno, el segundo pasará a ser el primero y así sucesivamente. Para tomar al primer elemento, utilizo el método
firstChild. Esta acción se repetirá mientras la cantidad de elementos contenidos en la sección sea mayor a cero.
Luego, con ayuda de otro bucle, voy creando la cantidad de cajas especificadas por el usuario al elegir una de las opciones del combo y las voy adhiriendo una a una a la sección
almacen con ayuda del método
appendChild.
Así es como quedaría:
http://jsbin.com/aPatiDOS/1
Saludos