Foros del Web » Programando para Internet » Javascript »

solo funciona en un explorador

Estas en el tema de solo funciona en un explorador en el foro de Javascript en Foros del Web. Hola ¡¡ Tengo un select múltiple en el cual tengo cuatro botones: Añadir un elemento, borrar un elemento, añadir todos los elementos y borrar todos ...
  #1 (permalink)  
Antiguo 21/04/2008, 05:49
 
Fecha de Ingreso: marzo-2008
Mensajes: 42
Antigüedad: 16 años, 1 mes
Puntos: 0
solo funciona en un explorador

Hola ¡¡

Tengo un select múltiple en el cual tengo cuatro botones:
Añadir un elemento, borrar un elemento, añadir todos los elementos y borrar todos los elementos.

El de añadir todos y borrar todos es este:


Código:
function anadirTodos(val) {
		var newOpt
		for (k=0;k<val.lista.length;k++) {
			newOpt = document.createElement("OPTION");
			newOpt.text = val.lista.options[k].text;
			newOpt.value = val.lista.options[k].value;
			val.seleccionados.options.add(newOpt,val.seleccionados.length);
			//val.lista.options.remove(k);
		}
		
		for (k=0;k<val.lista.length;) {
			val.lista.options.remove(k);
		}
		

	}
	
	function eliminarTodos(val) {
		var newOpt
		for (k=0;k<val.seleccionados.length;k++) {
			newOpt = document.createElement("OPTION");
			newOpt.text = val.seleccionados.options[k].text;
			newOpt.value = val.seleccionados.options[k].value;
			val.lista.options.add(newOpt,val.lista.length);
			//val.lista.options.remove(k);
		}
		
		for (k=0;k<val.seleccionados.length;) {
			val.seleccionados.options.remove(k);
		}
	}
El problema que tengo es que en el internet explorer funcionan sin problemas, pero en el firefox en vez de moverlos, lo que hace es copiarlos, osea si por ejemplo en lista1 tengo los valores:1,2,3 y 4 y le pulso al botón pasar todos, me pasa a lista2 los valores:1,2,3 y 4, pero no los quita de lista1, en cambio en internet explorer si lo hace correctamente.



También me ocurre que cuando añado un registro individualmente y luego lo quito, vuelve a la lista principal desordenado:

Este es el código:

Código:
function anadir() { 
    obj=document.getElementById('lista'); 
    if (obj.selectedIndex==-1) return; 
    valor=obj.value; 
    txt=obj.options[obj.selectedIndex].text; 
    obj.options[obj.selectedIndex]=null; 
    obj2=document.getElementById('seleccionados'); 
    opc = new Option(txt,valor); 
    eval(obj2.options[obj2.options.length]=opc);  
} 
	
function eliminar() { 
    obj=document.getElementById('seleccionados'); 
    if (obj.selectedIndex==-1) return; 
    valor=obj.value; 
    txt=obj.options[obj.selectedIndex].text; 
    obj.options[obj.selectedIndex]=null; 
    obj2=document.getElementById('lista'); 
    opc = new Option(txt,valor); 
    eval(obj2.options[obj2.options.length]=opc);     
}
¿Cómo puedo hacer que vuelva el registro a la lista ordenado alfabéticamente como lo tenía en un principio?


Alguien puede hecharme una mano???

Un saludo ¡¡

Última edición por FlashO; 21/04/2008 a las 05:52 Razón: Añadir mas código
  #2 (permalink)  
Antiguo 21/04/2008, 08:22
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años
Puntos: 35
Re: solo funciona en un explorador

loading.................

Creo que tu problema está en la eliminacion de las opciones, hazlo así.

Cita:
var a = document.getElementById('idSelect');
for(var i=0;i<a.options.length;i++)
{
b=a.options[0];
b.parentNode.removeChild(b);
}
Lo hago así ya que por ejemplo si tienes

options[0] <- un option
options[1] <- un option
options[2] <- un option
options[3] <- un option

y eliminas options[0] y luego quieres eliminar options[1] .. se va a dar pero no podras llegar al 2do ni al tercero, ya que cuando eliminas un options se vuelve a regenerar su array

options[0]
options[1]
options[2]

si eliminas options[0] queda

options[0]
options[1]

si eliminas otro option mas

options[0]

Y así sucesivamente.


connection closed.
__________________

Maborak Technologies
  #3 (permalink)  
Antiguo 21/04/2008, 09:00
 
Fecha de Ingreso: marzo-2008
Mensajes: 42
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: solo funciona en un explorador

He probado con ese código pero no consigo hecharlo a andar.
El caso es que con el que yo he puesto más arriba, me funciona bien en el explorer, pero no en el firefox...

Un saludo y muchas gracias por contestar

Última edición por FlashO; 21/04/2008 a las 09:00 Razón: error de escritura
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 16:02.