Pongo el código por si le sirve de ayuda a alguien. Imagino que con pocos cambios sirva para añadir cualquier tipo de elemento.
Saludos
Código:
<html> <head> <meta http-equiv="Content-Language" content="es"> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <meta Author=IR> <title>Número de Revisores</title> <SCRIPT LANGUAGE="JavaScript"> <!--// function addSelect(){ var num_select=document.revisores.num_rev.value; //obtengo el valor del select var select = document.getElementsByTagName("select"); var select_actuales = select.length -1; //numero de select ya añadidos //resto 1 porque el select[0] es el que muestra los numeros y no lo voy a contar if (select_actuales < num_select){ //añado tantos select como me indique el numero menos los que tengo añadidos ya var poner = (num_select - select_actuales); num_nombre=select_actuales+1; //para poner el numero del revisor al select for (var i=0; i<poner; i++){ var nuevoSelect = document.createElement("select"); //creo el nodo del select //elijo nombres correlativos para lo select para diferenciarlos nombre_select="select"+num_nombre; num_nombre++; nuevoSelect.setAttribute("name", nombre_select); //añado el nombre al select var nuevoOption = document.createElement("option"); //creo el nodo option //por ejemplo voy a meter solo 1 valor al select var nodoTextoOption = document.createTextNode("opcion 1"); //creo un nodo texto para el option nuevoOption.appendChild(nodoTextoOption); //añado el nodo texto al nodo option nuevoSelect.appendChild(nuevoOption); //añado el nodo option al nodo select var cuerpoRef = document.getElementsByTagName("body")[0]; //saco el nodo en el que quiero colgarlo cuerpoRef.appendChild(nuevoSelect); //engancho el nodo creado al padre } }else{ //el valor del número es menor que el número de select que tengo puestos, hay que eliminar nodos var j = select_actuales - (select_actuales - num_select); // j es el nodo en el que hay que parar de eliminar //elimino hijos a partir del último hasta quedarme con el numero seleccionado for (var i=select_actuales; i>j; i--){ var select = document.getElementsByTagName("select")[i]; //selecciono el nodo final var padre = select.parentNode; //busco el padre del nodo final var hijo_borrado = padre.removeChild(select); //elimino el nodo final } } select_actuales=i; //almacena el numero de revisores puestos } //--> </SCRIPT> </head> <body> <form name='revisores' METHOD=POST ACTION=""> <p>Selecciona el número de Select <p><select size='1' name='num_rev' onchange='addSelect()'> <option value='1'> 1 </option> <option value='2'> 2 </option> <option value='3'> 3 </option> <option value='4'> 4 </option> <option value='5'> 5 </option> <option value='6'> 6 </option> </select> </p> </p> </form> </body> </html>