Foros del Web » Programando para Internet » Javascript »

link dependiente de un select

Estas en el tema de link dependiente de un select en el foro de Javascript en Foros del Web. como hago que un link cambie dependiendo de lo que se seleccione en el select...
  #1 (permalink)  
Antiguo 12/07/2012, 19:30
Avatar de carlod_39  
Fecha de Ingreso: noviembre-2011
Ubicación: FAfdddsf
Mensajes: 59
Antigüedad: 13 años
Puntos: 1
Pregunta link dependiente de un select

como hago que un link cambie dependiendo de lo que se seleccione en el select
  #2 (permalink)  
Antiguo 12/07/2012, 21:35
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 5 meses
Puntos: 1567
Respuesta: link dependiente de un select

Que cambie que cosa del link?
el href?
el title?
el texto?
algún estilo?

me inclino por lo primero, usas el evento onchange()
recibis el value del select
hacés un
window.location.href = valor_del_select

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #3 (permalink)  
Antiguo 12/07/2012, 21:48
 
Fecha de Ingreso: enero-2012
Ubicación: Santiago de Surco, Lima - Perú
Mensajes: 266
Antigüedad: 12 años, 10 meses
Puntos: 57
Información Respuesta: link dependiente de un select

Hola carlod_39, que tal.

Usa el evento onchange para llamar una función en el select y dentro de tu función cambia el href de la siguiente manera:
Código Javascript:
Ver original
  1. document.getElementById("mienlace").href = url;
.
En url indicas la nueva dirección.
  #4 (permalink)  
Antiguo 12/07/2012, 22:43
 
Fecha de Ingreso: diciembre-2004
Mensajes: 21
Antigüedad: 20 años
Puntos: 3
Respuesta: link dependiente de un select

Hola a todos:
Que les parece este codigo:
Código HTML:
Ver original
  1. <script type="text/javascript">
  2.  function cambiar_link(){
  3.       var _link = new Array('milink1', 'milink2', 'milink3');
  4.       alert('Este es el array con todos los links: '+_link);
  5.       _div = document.getElementById('id_div');
  6.       _select = document.getElementById('id_select')
  7.       _optioncant = _select.length;
  8.       alert ('Las cantidad de opciones son: '+_optioncant);
  9.       _option=_select.options[_select.selectedIndex].index;
  10.       alert('Esta es la opcion numero: '+_option+ '. Recordar que la primera opcion es 0');
  11.       for (i=1; i< _optioncant; i++){
  12.           if (i == _option){
  13.            _div.innerHTML = '<a href="http://www.'+_link[i-1]+'.com">Mi link '+i+'</a>';
  14.             break;
  15.           }
  16.        }
  17.     }
  18.    </script>
  19. </head>
  20.   <select id="id_select" onchange="cambiar_link()">
  21.    <option>OPCIONES</option>
  22.    <option>opcion 1</option>
  23.    <option>opcion 2</option>
  24.    <option>opcion 3</option>
  25.   </select>
  26.   </form>
  27.   <div id='id_div'></div>
  28.   </body>
  29.  </html>
  #5 (permalink)  
Antiguo 13/07/2012, 08:39
Avatar de carlod_39  
Fecha de Ingreso: noviembre-2011
Ubicación: FAfdddsf
Mensajes: 59
Antigüedad: 13 años
Puntos: 1
Respuesta: link dependiente de un select

gracias a todos por su ayuda
  #6 (permalink)  
Antiguo 13/07/2012, 10:28
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 22 años, 1 mes
Puntos: 317
Respuesta: link dependiente de un select

No está mal ese ejemplo, racba.

No lo probé, pero cubre algunas posibilidades a futuro.

Porque nuestro amigo carlod_39 vino a dar las gracias, pero jamás a explicar qué es lo que quiso cambiar.

Quizá deberíamos esperar a que diera un mínimo acuse de recibo a la respuesta de emprear, o a su interpretación y la de gebremswar.

Tampoco hay que regalarles un cutandpaste si no muestran ningún empeño; o mañana lo vas a tener mangueando de nuevo, con otro mensaje incomprensible de los que no debería haber ninguno por aquí.
  #7 (permalink)  
Antiguo 13/07/2012, 10:56
Avatar de carlod_39  
Fecha de Ingreso: noviembre-2011
Ubicación: FAfdddsf
Mensajes: 59
Antigüedad: 13 años
Puntos: 1
Respuesta: link dependiente de un select

efectivamente lo que quería era que al seleccionar una opción en el select la dirección del link cambia el href
el ejemplo lo probé y me funciono

furoya no se que vienes a hacer aquí ¿a puro molestar? porque no aportas nada de interés, gracias a esta pagina y a personas como racba, gebremswar y emprear e aprendido mucho,
cuando me registe no sabia nada.
Yo no estoy haciendo ningún trabajo solo quiero aprender
  #8 (permalink)  
Antiguo 13/07/2012, 11:26
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 22 años, 1 mes
Puntos: 317
Respuesta: link dependiente de un select

Le vine a contestar a racba.

Y no mientas ¿o piensas que somos idiotas, y no vamos a notar que no pusiste ni una línea de código, que preguntaste cualquier cosa y que nunca buscaste algo que está en cualquier tutorial?

Y antes de venir a discutirme a qué vengo, revisa todos mis mensajes. Ahí está perfectamente explicado.
  #9 (permalink)  
Antiguo 13/07/2012, 11:42
Avatar de carlod_39  
Fecha de Ingreso: noviembre-2011
Ubicación: FAfdddsf
Mensajes: 59
Antigüedad: 13 años
Puntos: 1
Respuesta: link dependiente de un select

nunca pregunto sin buscar por todos lados antes, si no fuera así estaría preguntando a cada rato o crees que ahora nomas se me ocurrió, no he aportado porque no aun no tengo los conocimientos suficientes, estoy recién en primer año de la universidad
  #10 (permalink)  
Antiguo 13/07/2012, 12:20
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 22 años, 1 mes
Puntos: 317
Respuesta: link dependiente de un select

¿Es necesario postear un mensaje incoherente, del cual apenas se puede interpretar alguna idea suelta?

Veamos.
¿Estás en en primer año de una universidad?. No creo. A alguien que redacta así no lo pueden dejar salir del 4º grado de primaria.

¿Buscaste antes de preguntar? Este mismo Foro está lleno de ejemplos varios para cada caso. El único que puede creerte eso es el que recién llega de otro planeta y no conoce FdW.

¿No aportas porque no tienes conocimientos suficientes? Te felicito, lo bien que haces. Si encima tenemos que aguantar a los que no saben y responden cualquier cosa ...
Pero acá se colabora posteando bien (tu pregunta está mal formulada, lo puede ver cualquiera más allá de que mientas pensando que nadie va a subir el escrol), se colabora al no preguntar lo que está en cualquier tutorial con sus ejemplos (¿ahora que vas a decir, que también pusiste el ejemplo que no te andaba?). Y es muy sugestivo que aparecieras cuando racba publicó un c&p (como te dije, vine a responderle a él, ya vi que aún con su puñado de mensajes, está viniendo a colaborar; porque seguramente sí leyó el Foro y aprendió antes de registrarse).

Lo demás es muy incoherente, si tuviese que interpretarlo ... sería terrible, porque encima demostraría que no tienes la menor idea de cómo comportarte en un foro. que es algo que a estas alturas no me sorprendería para nada.

No creo que te des cuenta, o no creo que te importe, el ridículo que estás haciendo al venir a desafiar a alguien que tiene más post que tú. Más años que tú. Y muchísimos más aportes que tú.

Nadie, que no tenga algún problemita, puede pensar que no sé lo que estoy haciendo. Y menos que lo que estoy haciendo está mal.

Que a los desubicados no les guste, es otra historia.
Y es la idea.
  #11 (permalink)  
Antiguo 13/07/2012, 13:08
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 5 meses
Puntos: 1567
Respuesta: link dependiente de un select

Cita:
Iniciado por racba Ver Mensaje
Hola a todos:
Que les parece este codigo:
Código HTML:
Ver original
  1. <script type="text/javascript">
  2.  function cambiar_link(){
  3.       var _link = new Array('milink1', 'milink2', 'milink3');
  4.       alert('Este es el array con todos los links: '+_link);
  5.       _div = document.getElementById('id_div');
  6.       _select = document.getElementById('id_select')
  7.       _optioncant = _select.length;
  8.       alert ('Las cantidad de opciones son: '+_optioncant);
  9.       _option=_select.options[_select.selectedIndex].index;
  10.       alert('Esta es la opcion numero: '+_option+ '. Recordar que la primera opcion es 0');
  11.       for (i=1; i< _optioncant; i++){
  12.           if (i == _option){
  13.            _div.innerHTML = '<a href="http://www.'+_link[i-1]+'.com">Mi link '+i+'</a>';
  14.             break;
  15.           }
  16.        }
  17.     }
  18.    </script>
  19. </head>
  20.   <select id="id_select" onchange="cambiar_link()">
  21.    <option>OPCIONES</option>
  22.    <option>opcion 1</option>
  23.    <option>opcion 2</option>
  24.    <option>opcion 3</option>
  25.   </select>
  26.   </form>
  27.   <div id='id_div'></div>
  28.   </body>
  29.  </html>
Haya paz !!!

@racba
permitime simplificarlo un poco

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2.    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  5. <title>cambiar href</title>
  6. <script type="text/javascript">
  7. //<![CDATA[
  8.    function cambiar_link(){
  9.    var elLink = document.getElementById('id_select');
  10.    if(elLink.value !== ""){
  11.    document.getElementById('destino').href = elLink.value;
  12.    document.getElementById('destino').innerHTML =elLink.options[elLink.selectedIndex].text;
  13.    }
  14.    }
  15. //]]>
  16. </head>
  17. <form action="#">
  18. <select id="id_select" onchange="cambiar_link()">
  19. <option value="">OPCIONES</option>
  20. <option value="http://google.com">google</option>
  21. <option value="http://forosdelweb.com">foros del web</option>
  22. <option value="http://emprear.com">emprear</option>
  23. </form>
  24. <a href="#" id="destino">ir a</a>
  25. </body>
  26. </html>

De todas maneras, mucho sentido no le encuentro (a lo mejor viendo todo el conjunto...)

Las opciones más comunes para esto serían

A. que al hacer onchange() haga directamente la redirección
B. no hacer el onchange(), agregar un botón y que ejecute la función onclick()
@carlod_39
sin ánimo de inmiscuirme en tu pequeño entredicho con @furoya, si hubieses comentado
Cita:
efectivamente lo que quería era que al seleccionar una opción en el select la dirección del link cambia el href
oportunamente, este posts no tendría más de 3 respuestas (incluido tu agradecimiento)

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #12 (permalink)  
Antiguo 13/07/2012, 14:21
Avatar de carlod_39  
Fecha de Ingreso: noviembre-2011
Ubicación: FAfdddsf
Mensajes: 59
Antigüedad: 13 años
Puntos: 1
Respuesta: link dependiente de un select

De esa manera se ve mucho mas simple

Cita:
De todas maneras, mucho sentido no le encuentro (a lo mejor viendo todo el conjunto...)
es para una paguina donde se elije el año y luego el mes y el link cambia (una especie de búsqueda)

Cita:
sin ánimo de inmiscuirme en tu pequeño entredicho con @furoya, si hubieses comentado
Cita:
efectivamente lo que quería era que al seleccionar una opción en el select la dirección del link cambia el href
oportunamente, este posts no tendría más de 3 respuestas (incluido tu agradecimiento)
lo que pasa es que respondieron tan rápido que pensé que ya se avía entendido

Última edición por carlod_39; 13/07/2012 a las 14:46
  #13 (permalink)  
Antiguo 13/07/2012, 19:11
 
Fecha de Ingreso: diciembre-2004
Mensajes: 21
Antigüedad: 20 años
Puntos: 3
Respuesta: link dependiente de un select

Hola emprear:
Revise tu codigo y esta barbaro.
Me sirve de ayuda a como tipear lo menos posible.
  #14 (permalink)  
Antiguo 13/07/2012, 19:54
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 22 años, 1 mes
Puntos: 317
Respuesta: link dependiente de un select

Cita:
Iniciado por carlod_39 Ver Mensaje
... lo que pasa es que respondieron tan rápido que pensé que ya se avía entendido


==========================================


Cita:
Iniciado por racba Ver Mensaje
Hola emprear:
Revise tu codigo y esta barbaro.
Sí, como de costumbre. Yo no se lo digo porque parece que fuera un chupamedias.

Lo que no me exime de agregar algo más.

emprear : El asunto que me llamó la atención del ejemplo de racba, es que si bien ya es C&P, no deja de ser didáctico. Y encima cubre esa falta de precisión original que todavía seguimos comentando.

Si bien yo hubiese empezado a probar con nodos, él prefirió el innerHTML, que es más fácil de entender.
Porque resulta que otra cosa que se podía "cambiar" era el contenido del anchor.

La lógica sería así : para cambiar el href podemos hacerlo de la manera fácil, tal como lo pusiste tú

Código:
...
document.getElementById('destino').href = "";
...
pero para cambiar el texto o vas a los nodos o mueres en el innerHTML.
¡Y para eso se explica todo en innerHTML!

Tu idea es usar un escript que dependa del selector.
El ejemplo anterior hace depender el select de un array.
Aunque no totalmente.

El siguiente paso sería crear también los option dependiendo de los elementos de array's.
Un mecanismo del tipo BDAL (Base de Datos Avant la Lettre) sobre listas en cada script.

Y por supuesto, usando también innerHTML.

Código:
<!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=utf-8" />
<title>cambiar href</title>
<script type="text/javascript">
//<![CDATA[
var _link = new Array('milink0', 'milink1', 'milink2');

//var _dest = new Array());

var _optioncant = _link.length;

var _select;

function llenar_selector(){
var _optiontotal = "";

_select = document.getElementById('id_select');

for (i=0; i< _optioncant; i++){
_optiontotal += "<option value=\""+ _link[i] +"\">"+ _link[i] +"</option>\r\n";
}

_select.innerHTML = _optiontotal;

}


function cambiar_link(){

var _div = document.getElementById('id_div');

_option=_select.options[_select.selectedIndex].index;

for (i=0; i< _optioncant; i++){
if (i == _option){
_div.innerHTML = "<a href=\"http://www."+ _select.options[i].value +".com\">"+ _select.options[i].text +"</a>";
break;
}
}

}

//]]>
</script>
</head>
<body>
<form>
<select id="id_select" onchange="cambiar_link()" 
onmousedown="llenar_selector(); this.removeAttribute('onmousedown')">
<option>OPCIONES</option>
</select>

<span id='id_div'></span>
</form>

</body>
</html>

[Nota : a mi me gusta más desvirtuar los temas, pero éste puede seguir mejorando. Para llevarlo a cualquier lado, siempre hay tiempo.]
  #15 (permalink)  
Antiguo 13/07/2012, 22:10
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 5 meses
Puntos: 1567
Respuesta: link dependiente de un select

@furoya
Buen enfoque el tuyo, pero te cuento, todo pasa un poco por lo que expresé anteriormente
De todas maneras, mucho sentido no le encuentro (a lo mejor viendo todo el conjunto...)
Fiel a mi costumbre, y pensando en que mis observaciones puedan servir a otros, voy a hacer una expplicación detallada del mío (mi enfoque)

Si alguien me preguntase como puede identificar un elemento, le diría lisa y llanamente
document.getElementBy....., ok, pero eso es teoría pura, pero al llevar un código a la práctica, eso es otro cantar. Y a falta de más datos imaginé esto

mi select con sus opciones se genera dinamicamente a partir de una base de datos, agrego el value y el texto, y aprovecho estos en la script, sin necesidad de que esta tenga que ser modificada.

Con respecto al text, ni siquiera lo usaria, ya que visualmente y en cuanto a accesibilidad se resuelve tranquilamente por otro lado, caí en lo del innerHTML simplemente por hacer lo más parecido a lo propuesto. Tampoco me satisface mucho lo de
Cita:
es para una paguina donde se elije el año y luego el mes y el link cambia (una especie de búsqueda)
pero se puede evitar

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2.    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  5. <title>cambiar href</title>
  6.  
  7. <style type="text/css">
  8. /*<![CDATA[*/
  9.  
  10. #destino{
  11. background: #FFF;
  12. color: blue;
  13. text-decoration: underline;
  14. padding: 1px 0px;
  15. text-align: left;
  16. outline: none;
  17. border: solid 1px transparent;
  18. }
  19.  
  20. #destino:hover{
  21. color: red;
  22. }
  23.  
  24. /*]]>*/
  25. <script type="text/javascript">
  26. //<![CDATA[
  27.    function cambiar_link(){
  28.    var elLink = document.getElementById('id_select');
  29.    if(elLink.value !== ""){
  30.    document.getElementById('navegar').action = elLink.value;
  31.    document.getElementById('destino').value =elLink.options[elLink.selectedIndex].text;
  32.    }
  33.    }
  34. //]]>
  35. </head>
  36. <form action="#" id="navegar">
  37. <select id="id_select" onchange="cambiar_link()">
  38. <option value="" selected="selected">destinos</option>
  39. <option value="http://google.com">google</option>
  40. <option value="http://forosdelweb.com">foros del web</option>
  41. <option value="http://emprear.com">emprear</option>
  42. </select><br /><br />
  43. <input type="submit" id="destino" value="seleccione una opción" />
  44. </form>
  45. </body>
  46. </html>

Claro, que tras conseguir nuestro cometido, caemos que no es más que un archiconocido dropdown menu a partir de un select y que el texto "ir al destino seleccionado" sería ( a mi juicio) más que suficiente.
Por supuesto que en una de esas se nos aparece @carlod_39 presentándonos un complejo sistema de selects dependientes, y la simpleza de lo previo, no cumple con los requisitos

saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #16 (permalink)  
Antiguo 14/07/2012, 09:11
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 22 años, 1 mes
Puntos: 317
Respuesta: link dependiente de un select

Es que no sé si tiene que tener sentido.
En realidad estamos divagando con la excusa que nos dio la ambigüedad (en rigor de verdad, "multigüedad", pero nosotros estamos tomando sólo dos caminos, por ahora) que nos dejó el primer post.

Lo de las fechas ... puede ser, o no; supongo que carece de importancia. Viendo tu ejemplo, se me ocurre una página de un periódico que se edita cuando lo pueden, que ya tiene unos 20 números en la calle, y que para ver su contenido en la web ponen un selector con las fechas que cambia un enlace que muestra un thumbnail de la portada, el cual se cambiará dependiendo de la elección, junto con el destino.

Tu último código simula un link, pero es un botón con submit. Lo mismo se puede cambiar el scr de una imagen que tenga un evento onclick; y tendríamos resuelto el caso arriba mencionado.

Para redondear la apostilla, si a carlod_39 le sirve algo, me alegro por él. Porque es seguro que no puso su (pésima) pregunta para aprender.
O lo hizo para obtener el trabajo hecho, porque no sabe pero se mete igual, y eso explicaría su forma de expresarse. O es otro que viene a empiojar el sitio, preguntando cualquier cosa de cualquier manera para que tengamos que ponerlo en vereda, y después quejarse de lo mal que lo tratamos, como si la víctima fuese él.

Así que el sentido práctico de todo esto me nefrega tres pitos. Si empezamos a poner código didáctico, seguimos así.

Y ya que mencionaste los selectores en cadena, aprovecho a comentar que es cierto, se acerca mucho a lo que estamos posteando. Y también es algo muuuy repetido como para que vengan a preguntarlo. Un caso donde participé es el tema

Iframe con Javascript

donde los dos sabíamos cuál era el drama, pero la estiramos hasta que no hartó.
Si el consultante no hubiese terminado mostrando cierta grandeza, tapándome la boca, ni le cerraba el asunto. Pero bueno, también hay que premiar al que hace algo bien.

Etiquetas: dependiente, link, select
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 04:10.