Foros del Web » Programando para Internet » Javascript »

problemas con document.getElementById

Estas en el tema de problemas con document.getElementById en el foro de Javascript en Foros del Web. Buenas!! Tengo dos selects múltiples donde el primero tiene un cierto numero de campos y que al pulsar sobre el botón de añadir, se pasa ...
  #1 (permalink)  
Antiguo 01/06/2009, 01:14
 
Fecha de Ingreso: enero-2008
Ubicación: Manresa
Mensajes: 24
Antigüedad: 16 años, 3 meses
Puntos: 0
problemas con document.getElementById

Buenas!!

Tengo dos selects múltiples donde el primero tiene un cierto numero de campos y que al pulsar sobre el botón de añadir, se pasa el valor seleccionado al segundo select, a la vez que también una opción de mover (eliminar) los campos del segundo select y colocarlos de nuevo en el primero.

el código de la función es este:

Código:
function AddToSecondList()
{
	var fl = document.getElementById("firstlist");
	var sl = document.getElementById("secondlist");    
	for (i = 0; i < fl.options.length; i++)
	{
		if(fl.options[i].selected)
		{
			sl.add(fl.options[i],null);
			
		}
	}
	return true;
}

function DeleteSecondListItem()
{
	var fl = document.getElementById("firstlist");	
	var sl = document.getElementById("secondlist");    
	for (i = 0; i < sl.options.length; i++)
	{
		if(sl.options[i].selected)
		{
			fl.add(sl.options[i],null);
		}
	}
	return true;
}

...
...
...

<input type="button" value="afegir" onclick="AddToSecondList();" />
<input type="button" value="eliminar" onclick="DeleteSecondListItem();" />
Esto me funciona bien en iExplorer 7 y 8, y en Firefox, pero en iexplorer 6, me da un error al presionar sobre el botón de añadir/quitar de "Tipo Incorrecto"....

Sabéis donde puede estar el error??

Gracias
  #2 (permalink)  
Antiguo 01/06/2009, 02:21
Avatar de KiraSakuya  
Fecha de Ingreso: junio-2009
Mensajes: 67
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: problemas con document.getElementById

Esto de los navegadores es una locura, mira a ver si poniendo en vez de

fl.add(sl.options[i],null);

que tienes dentro del if, te funciona con esto otro

fl.options.add(sl.options[i],null);

Última edición por KiraSakuya; 01/06/2009 a las 02:43
  #3 (permalink)  
Antiguo 01/06/2009, 02:49
 
Fecha de Ingreso: enero-2008
Ubicación: Manresa
Mensajes: 24
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: problemas con document.getElementById

noooooo :((

haciendo estas modificaciones que me comentas, no funciona en ningun navagador, retornandome un mensaje de error "no coinciden los tipos"
  #4 (permalink)  
Antiguo 01/06/2009, 03:10
Avatar de KiraSakuya  
Fecha de Ingreso: junio-2009
Mensajes: 67
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: problemas con document.getElementById

Perdona, es que a estas horas no estoy muy atento, par lo que te dije primero debes crear la opcion

var nuevaOpcion = new Option("Texto","Valor");
document.getElementById("tuComboBox").options.add( nuevaOpcion);

donde texto y valor será lo que recojas del otro combo, a ver si te funciona :)
  #5 (permalink)  
Antiguo 01/06/2009, 04:11
 
Fecha de Ingreso: enero-2008
Ubicación: Manresa
Mensajes: 24
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: problemas con document.getElementById

no te acabo de entender... me lo podrias explicar mas detalladamente? vaaaaa que ya son las 12h!!! jejeje
  #6 (permalink)  
Antiguo 01/06/2009, 04:27
Avatar de KiraSakuya  
Fecha de Ingreso: junio-2009
Mensajes: 67
Antigüedad: 14 años, 11 meses
Puntos: 1
Sonrisa Respuesta: problemas con document.getElementById

jaja claro
a ver tu cojes un elemento del combobox1 y lo quieres introducir en el 2, para ello, debes crear una nueva variable de tipo option y para ello utilizas la sentencia siguiente:

var nuevaOpcion(text,value) en tu caso text seria igual a sl.options[i], y el valor seria igual a null tal y como lo indicas.

Una vez creado el objeto se le añade al combobox donde deseas almacenarlo y para ello está lo que en un primer momento te dije:

document.getElementById(tuSelect).options.add(nuev aOpcion);

Donde tuSelect será el objeto de tipo select (supongo que sera una lista) donde quieres añadir el nuevo objeto de tipo option y nuevaOpcion será la opcion que has definido anteriormente, en este caso la dejo con el mismo nombre para ver si asi lo ves mejor :)

No se si me he expresado bien ahora, si eso no tengo problema en seguir intentandolo

Última edición por KiraSakuya; 01/06/2009 a las 05:29
  #7 (permalink)  
Antiguo 01/06/2009, 08:47
 
Fecha de Ingreso: enero-2008
Ubicación: Manresa
Mensajes: 24
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: problemas con document.getElementById

Vale!! hemos conseguido algo....
para que al traspasar los campos del select 1 al select 2 se eliminen del primero (y vicerversa), como?
y para que los valores del segundo select queden "TODOS" seleccionados?

el codigo ahora esta asi:

Código:
if(fl.options[i].selected){
var nuevaOpcion = new Option(fl.options[i].text,fl.options[i].value); 
document.getElementById("secondlist").options.add(nuevaOpcion);	
}
  #8 (permalink)  
Antiguo 02/06/2009, 00:29
Avatar de KiraSakuya  
Fecha de Ingreso: junio-2009
Mensajes: 67
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: problemas con document.getElementById

A ver, comencemos por lo sencillo, si quieres ir añadiendo elementos y a su vez estos queden seleccionados lo que debes hacer es añadir un par de parametros donde pones (y digo un par porque dejas uno en blanco, que no se te olvide :D ):


var nuevaOpcion = new Option(fl.options[i].text,fl.options[i].value);


De tal forma que quede asi:


var nuevaOpcion = new Option(fl.options[i].text,fl.options[i].value,"","selected");


En cuanto a borra un elemento de un combobox se hace igualando la opción correspondiente a null, de tal forma que quedaria asi:


document.getElementById("secondlist").options[indiceSeleccionado]=null;


Esto ultimo iria en el bucle e indice seleccionado sería el mismo que el del option del que tomas los valores.

Si no entiendes algo ya sabes :) solo tienes que preguntar :D
  #9 (permalink)  
Antiguo 02/06/2009, 00:44
 
Fecha de Ingreso: enero-2008
Ubicación: Manresa
Mensajes: 24
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: problemas con document.getElementById

Eres el mejor!!! 100% funcionando.

Os dejo el codigo de como ha quedado, por si a alguno le puede ser útil.

Código:
function AddToSecondList(){
	var fl = document.getElementById("firstlist");
	var sl = document.getElementById("secondlist");    
	for (i = 0; i < fl.options.length; i++){
		if(fl.options[i].selected){
			var nuevaOpcion = new Option(fl.options[i].text,fl.options[i].value,null,"selected"); 
			document.getElementById("secondlist").options.add(nuevaOpcion);	
			document.getElementById("firstlist").options[i] = null;
		}
	}
	return true;
}

function DeleteSecondListItem(){
	var fl = document.getElementById("firstlist");	
	var sl = document.getElementById("secondlist");    
	for (i = 0; i < sl.options.length; i++){
		if(sl.options[i].selected){
			var nuevaOpcion = new Option(sl.options[i].text,fsl.options[i].value,null,"selected"); 
			document.getElementById("firstlist").options.add(nuevaOpcion);	
			document.getElementById("secondlist").options[i] = null;
		}
	}
	return true;
}
Saludos y muchas gracias!!!
  #10 (permalink)  
Antiguo 02/06/2009, 00:56
Avatar de KiraSakuya  
Fecha de Ingreso: junio-2009
Mensajes: 67
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: problemas con document.getElementById

Me alegra que siendo el primer usuario al que ayudo todo haya salido bien :D espero que pueda ayudar a mucha mas gente ;)

Un saludo :)
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.
Respuesta




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