Foros del Web » Programando para Internet » Javascript »

Llenar select con un array

Estas en el tema de Llenar select con un array en el foro de Javascript en Foros del Web. Tengo que llenar un select con datos que tengo en un array, o sea que cada option se un elemento de ese array como hago? ...
  #1 (permalink)  
Antiguo 09/11/2008, 15:33
Avatar de andama  
Fecha de Ingreso: noviembre-2008
Mensajes: 54
Antigüedad: 15 años, 5 meses
Puntos: 0
Llenar select con un array

Tengo que llenar un select con datos que tengo en un array, o sea que cada option se un elemento de ese array como hago?

yo estoy haciuendo esto:



for(var i=0;i<carreras.length;i++){
carreraElegida = document.getElementById("carrera").getElementsByTa gName("option")[i];
carreraElegida.removeChild(carreraElegida.firstChi ld);
carreraElegida.appendChild(document.createTextNode (carreras[i]));

}

pero solo me llena el primero.

Gracias a quien pueda ayudarme!
  #2 (permalink)  
Antiguo 09/11/2008, 15:39
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Llenar select con un array

En este caso creo que no es necesario manipular el DOM directamente. ¿Qué tal así?:
Código javascript:
Ver original
  1. var carrera = document.getElementById("carrera"); /* Para no tener que llamar a cada rato a getElementById */
  2. for(var i=0;i<carreras.length;i++){
  3.         carrera.options[i] = new Option(carreras[i]);
  4.        }
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 09/11/2008, 15:58
Avatar de andama  
Fecha de Ingreso: noviembre-2008
Mensajes: 54
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Llenar select con un array

Te agradezco mucho, pero me pasa lo mismo, solo aparece la primer opcion y me da este error:

carrera.options[i] is undefined.

lo mismo que me pasaba antes...
  #4 (permalink)  
Antiguo 09/11/2008, 16:03
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Llenar select con un array

¿Puedo ver el HTML como lo tienes ahora?. Además, ¿en qué parte da ese error?, porque al asignar no puede ser .
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 09/11/2008, 16:11
Avatar de andama  
Fecha de Ingreso: noviembre-2008
Mensajes: 54
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Llenar select con un array

esta es la parte de HTML

Código HTML:
<select id="carrera"><option>Aca van las carreras</option></select><br /> 

por lo que veo el error lo da cuando vuelve a entrar al for, porque el primero lo pone correctamente

gracias
  #6 (permalink)  
Antiguo 09/11/2008, 16:20
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Llenar select con un array

Tal vez si pones el HTML completo, porque yo he probado de esa forma y funciona. .
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #7 (permalink)  
Antiguo 09/11/2008, 16:24
Avatar de andama  
Fecha de Ingreso: noviembre-2008
Mensajes: 54
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Llenar select con un array

Cita:
Iniciado por David el Grande Ver Mensaje
Tal vez si pones el HTML completo, porque yo he probado de esa forma y funciona. .
este es el HTMl completo
Código HTML:
t<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Segundo TP - Programacion I</title>
<script src="script.js" type="text/javascript"></script>
<style>
fieldset {	display:block;	float:left;	width:440px;	margin:10px;	padding:10px; }
* html .floatFix {height:1%; }
* + html .floatFix {height:1%; display:inline-block;} 
.floatFix:after {content:"PEPE"; display:block; clear: both; height:0; visibility: hidden;}
</style>
</head>

<body>
<h1>Ficha personal del alumno <i>APELLIDO, NOMBRE</i></h1>
<div class="floatFix">
    <fieldset>
    	<legend>Datos personales</legend>
        <ul id="datos">
            <li>Aca va el apellido del alumno</li>
            <li>Aca va la materia del tp</li>
            <li>Aca va el cuatrimestre y comision del alumno</li>
            <li>Aca va la pagina personal. Debe abrir una ventana popup de 800 x 600 centrada horizontalmente</li>
        </ul>
        <select id="carrera"><option>Aca van las carreras</option></select><br />
        <select id="materias" disabled="disabled"><option>Seleccione una carrera para ver las materias</option></select><br />
    </fieldset>
    <fieldset>
    <legend>Equipo</legend>
        <div id="equipo">
        <img name="bandera" src="flags/none.jpg" style="float:right;" />
            Equipo de futbol<br />
            <label><input type="checkbox" id="seleccionar_equipo" />Seleccionar equipo</label><br />

            <label>&nbsp;&nbsp;<input type="radio" name="equipo" value="Boca" disabled="disabled" />Boca</label><br />
            <label>&nbsp;&nbsp;<input type="radio" name="equipo" value="River" disabled="disabled" />River</label><br />
            <label>&nbsp;&nbsp;<input type="radio" name="equipo" value="SanLorenzo" disabled="disabled" />San Lorenzo</label><br />
            <label>&nbsp;&nbsp;<input type="radio" name="equipo" value="Racing" disabled="disabled" />Racing</label><br />
            <label>&nbsp;&nbsp;<input type="radio" name="equipo" value="Tigre" disabled="disabled" />Tigre</label><br />
            <label>&nbsp;&nbsp;<input type="radio" name="equipo" value="otro" id="otro" disabled="disabled" />Otro</label>
            
        </div>
    </fieldset>
</div>
<div class="floatFix">
	<fieldset id="suscripcion">
    	<legend>Datos de suscripcion</legend>
        <table cellpadding="3" cellspacing="0" border="0">
        <tr><td>Usuario:</td><td><input type="text" id="nombre" /></td></tr>
        <tr><td>Clave:</td><td><input type="text" id="clave" /></td></tr>
        <tr><td>Reingrese la clave:</td><td><input type="text" id="clave2" /></td></tr>
        <tr><td>Fecha nacimiento [a�o/mes/dia]:</td><td><input type="text" id="fecha" /></td></tr>
        <tr><td>Edad:</td><td><input type="text" id="edad" disabled="disabled" readonly="readonly" /></td></tr>
        <tr><td>&nbsp;</td><td><input type="button" id="validar" value="validar datos" />&nbsp;<input type="button" id="borrar" value="borrar todo" />
        </table>
    </fieldset>
	<fieldset id="uploads">
    	<legend>Archivos adjuntos</legend>
        <input type="button" id="agregar" value="otro archivo" />
        <div id="archivo1"><input type="file" /><input type="button" id="quitar" value="quitar" /></div>
    </fieldset>
</div>
<em>Las pautas de este trabajo practico estan detalladas en el documento 'pautas tp2.doc' publicada en el FTP de carreras</em>
</body>
</html> 
y este es el array :
var carreras = ['Disenio web','Disenio multimedial','Disenio grafico'];

me resulta muy raro a mi tambien que me diga indefinida cuando está definida.
Te agradesco tu ayuda
  #8 (permalink)  
Antiguo 09/11/2008, 16:28
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Llenar select con un array

¿Y el script.js? .
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #9 (permalink)  
Antiguo 09/11/2008, 16:31
Avatar de andama  
Fecha de Ingreso: noviembre-2008
Mensajes: 54
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Llenar select con un array

Cita:
Iniciado por David el Grande Ver Mensaje
¿Y el script.js? .
ES ESTO LO QUE VOS ME PASASTE ANTES:


var carrera = document.getElementById("carrera");
for (var i = 0; i < carreras.length; i++) {

carrera.options[i].text = carreras[i];


  #10 (permalink)  
Antiguo 09/11/2008, 16:33
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Llenar select con un array

Pero, ¿así sin más?. Porque si así es no va a funcionar, ya que estás tratando de modificar un elemento antes que sea creado. Debes esperar hasta el evento onload para realizar las modificaciones.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #11 (permalink)  
Antiguo 09/11/2008, 16:37
Avatar de andama  
Fecha de Ingreso: noviembre-2008
Mensajes: 54
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Llenar select con un array

Cita:
Iniciado por David el Grande Ver Mensaje
Pero, ¿así sin más?. Porque si así es no va a funcionar, ya que estás tratando de modificar un elemento antes que sea creado. Debes esperar hasta el evento onload para realizar las modificaciones.

Perdón pensé que con eso era suficiente, tengo así

var carreras = ['Disenio web','Disenio multimedial','Disenio grafico'];

window.onload = cursos;


function cursos(){


var carrera = document.getElementById("carrera");
for (var i = 0; i < carreras.length; i++) {

carrera.options[i].text = carreras[i];
}
  #12 (permalink)  
Antiguo 09/11/2008, 16:42
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Llenar select con un array

Pero no lo pusiste como te dije en el segundo mensaje .

O sea, con new Option para crear una nueva opción y asignarla.

Saludos .
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #13 (permalink)  
Antiguo 09/11/2008, 16:46
Avatar de andama  
Fecha de Ingreso: noviembre-2008
Mensajes: 54
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Llenar select con un array

Cita:
Iniciado por David el Grande Ver Mensaje
Pero no lo pusiste como te dije en el segundo mensaje .

O sea, con new Option para crear una nueva opción y asignarla.

Saludos .
tenes, razón, pero la verdad que no vi esa parte. Perdón
y muchas gracia por tu ayuda
  #14 (permalink)  
Antiguo 09/11/2008, 17:18
Avatar de andama  
Fecha de Ingreso: noviembre-2008
Mensajes: 54
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Llenar select con un array

Cita:
Iniciado por andama Ver Mensaje
tenes, razón, pero la verdad que no vi esa parte. Perdón
y muchas gracia por tu ayuda
Una pregunta más... como le asigno un value a cada option?? porque luego tengo que hacer que segun que opcion se elija se habilite otro combo


gracias
  #15 (permalink)  
Antiguo 09/11/2008, 17:20
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Llenar select con un array

Si buscas en el foro verás que este tema ya fue tratado en otras ocasiones, pero bueno, es así:
Código javascript:
Ver original
  1. obj.options[i].value = "Valor";
Lógicamente, obj lo reemplazas por la referencia a tu select.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #16 (permalink)  
Antiguo 15/11/2011, 12:07
 
Fecha de Ingreso: marzo-2007
Mensajes: 12
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: Llenar select con un array

Hola David,...mira aun me falta aprender a intercambiar informacion entre JavaScript y PHP.

En mi caso, tengo una consulta en PHP, la cual paso a un arrego en Javascript, a la vez ese arreglo lo empleo para llenar un combo que se crea en una función que genera dinámicamente una tabla con campos de formulario <input> y <select>, podrías indicarme como debo hacer porque al momento de pulsar el botón para agregar una línea, simplemente no produce un ningún resultado, en cambio si le quito la opción de llenar el combo pero claro sin opciones, espero haber sido claro.
  #17 (permalink)  
Antiguo 16/03/2012, 06:21
Avatar de josepeet_4  
Fecha de Ingreso: marzo-2012
Mensajes: 6
Antigüedad: 12 años, 1 mes
Puntos: 0
Pregunta Respuesta: Llenar select con un array

David, podrias ayudarme con la misma duda? Yo he seguido el mismo ejemplo este que has dicho, pero no me sale. Te paso el codigo:
Código HTML:
Ver original
  1. <div id="div1">
  2. <select id="consola"><option></option></select>
  3. </div>

Esto es la parte del HTML

Y la parte del script tengo esto:

Código Javascript:
Ver original
  1. var consolas = new Array ("Playstation", "XBOX", "Wii");
  2. window.onload = mostrarfoto();
  3.  
  4. function mostrarfoto() {
  5.             var consola = document.getElementById("consola");
  6.             for (var i = 0; i < consolas.length; i++) {
  7.                 consola.options[i].text = new option (consolas[i]);
  8.             }
  9.         }

graciass
  #18 (permalink)  
Antiguo 16/03/2012, 07:40
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 11 meses
Puntos: 834
Respuesta: Llenar select con un array

josepeet_4: por favor no abras nuevos temas por el mismo asunto.
Continúa aquí: http://www.forosdelweb.com/f13/dudas...arrays-981807/
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 13:05.