Foros del Web » Programando para Internet » Javascript »

quitar valores del select

Estas en el tema de quitar valores del select en el foro de Javascript en Foros del Web. hola! tengo una pequeña preguntilla. Con este script logro agregar un valor a un select. buenisimo! pero... si quisiera borrar uno de los que agregue? ...
  #1 (permalink)  
Antiguo 18/07/2003, 08:08
Avatar de dieguicho  
Fecha de Ingreso: noviembre-2001
Ubicación: Buenos Aires
Mensajes: 1.190
Antigüedad: 22 años, 5 meses
Puntos: 1
quitar valores del select

hola!

tengo una pequeña preguntilla.
Con este script logro agregar un valor a un select.
buenisimo! pero... si quisiera borrar uno de los que agregue?

les dejo el codigo... gracias!!

Código PHP:
<script>
function 
add(valor) {
    
elem=document.getElementById('lista').options.length;
    var 
selOpcion=new Option(valor);
    
document.getElementById('lista').options[elem]=selOpcion;
}
</script>

<select id="lista" size="10" multiple>
</select>
<input id="textbox" type="text">
<input id="boton" type="button" value="agregar" onClick="add(document.getElementById('textbox').value)"> 
__________________
On error no hago nada porque deje de fumar...
  #2 (permalink)  
Antiguo 18/07/2003, 09:56
 
Fecha de Ingreso: abril-2003
Ubicación: Bogota
Mensajes: 131
Antigüedad: 21 años
Puntos: 2
Escibeme un mail a [email protected] o si lo prefieres estoy en linea en el messenger, y te envio un ejemplo que hace lo que necesitas
  #3 (permalink)  
Antiguo 18/07/2003, 11:02
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola dieguicho:

Me parece que para explorer existe el método remove, pero no sirve con netscape (y no sé si otros navegadores)...

Hice algunas pruebas con una página que tenía y salió una función que va bien en los dos:

Código PHP:
function borrar(yon)    {
    var 
nuevas = new Array();
    var 
0;
    var 
elementos yo.options;
    for (var 
0elementos.length++)
        if (
!= n)    {
            
nuevas[x] = new Option();
            
nuevas[x].text elementos[i].text;
            
nuevas[x].value elementos[i].value;
            
++;
        }
    for (
0nuevas.length++)    {
        
elementos[i].text nuevas[i].text;
        
elementos[i].value nuevas[i].value;
    }
    
elementos.length--;
    
elementos.selectedIndex--;

Como podrás ver, se trata de volcar a un nuevo array, las opciones existentes, y luego realizar el volcado inverso (sin el elemento que se quiere borrar... para luego disminuir el "length" de las opciones.

Lo probé en este ejemplo:

<SELECT onchange="borrar(this, this.selectedIndex)">
<option value=alert("Uno")>Uno</option>
<option value=alert("Dos")>Dos</option>
<option value=alert("Tres")>Tres</option>
<option value=alert("Cuatro")>Cuatro</option>
<option value=alert("Cinco")>Cinco</option>
<option value=alert("Seis")>Seis</option>
</select>

Espero que te sirva.

Saludos
  #4 (permalink)  
Antiguo 18/07/2003, 14:49
Avatar de dieguicho  
Fecha de Ingreso: noviembre-2001
Ubicación: Buenos Aires
Mensajes: 1.190
Antigüedad: 22 años, 5 meses
Puntos: 1
un chiche....

mil gracias!
__________________
On error no hago nada porque deje de fumar...
  #5 (permalink)  
Antiguo 31/07/2003, 04:38
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola otra vez:

Tal como te comenté en privado, creo que hay para los arrays un método sort, pero no lo pude hacer funcionar con el select, así que hice unas funciones para ordenar, que en netscape y explorer han funcionado (acabo de probarlas en opera y también funcionan)

Este es el ejemplo:


Código PHP:
<html>
<
head>
<
title>
    
ordenar select
</title>
<
script language="javascript">

function 
ordenarTexto(datos)    {
var 
elemento = new Option;;
    for (var 
0datos.options.length 1++)
        for (var 
1datos.length++)
            if (
datos.options[i].text datos.options[j].text)    {
                
elemento.text datos.options[i].text;
                
elemento.value datos.options[i].value;
                
datos.options[i].text datos.options[j].text;
                
datos.options[i].value datos.options[j].value;
                
datos.options[j].text elemento.text;
                
datos.options[j].value elemento.value;
            }
}

function 
ordenarValue(datos)    {
var 
elemento = new Option;;
    for (var 
0datos.options.length 1++)
        for (var 
1datos.length++)
            if (
datos.options[i].value datos.options[j].value)    {
                
elemento.text datos.options[i].text;
                
elemento.value datos.options[i].value;
                
datos.options[i].text datos.options[j].text;
                
datos.options[i].value datos.options[j].value;
                
datos.options[j].text elemento.text;
                
datos.options[j].value elemento.value;
            }
}

</script>
</head>
<body>
<form name=orden>
    <select name=elementos>
        <option value="c">2º opción</option>
        <option value="b">3º opción</option>
        <option value="a">1º opción</option>
    </select>

    <input type=button onclick="ordenarTexto(elementos)" value="ordenar por texto">
    <input type=button onclick="ordenarValue(elementos)" value="ordenar por valor">
</form>
</body>
</html> 
No sé si es la mejor forma de ordenar "selects", pero funciona...

Si alguien sabe una forma mejor, estaría bien que la dijera.

Saludos
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

SíEste tema le ha gustado a 2 personas (incluyéndote)




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