Foros del Web » Programando para Internet » Javascript »

Cambiar enlace con un solo boton

Estas en el tema de Cambiar enlace con un solo boton en el foro de Javascript en Foros del Web. Hola. Tengo 2 enlaces que se abren en un iframe y me gustaria usar el mismo boton en la pagina. Es decir que pulsas y ...
  #1 (permalink)  
Antiguo 21/05/2005, 03:52
 
Fecha de Ingreso: diciembre-2004
Ubicación: Malaga
Mensajes: 115
Antigüedad: 19 años, 4 meses
Puntos: 0
Cambiar enlace con un solo boton

Hola.

Tengo 2 enlaces que se abren en un iframe y me gustaria usar el mismo boton en la pagina. Es decir que pulsas y se abre el uno en el iframe, vuelves a pulsar y se abre el dos. Y asi sucesivamente, la idea es que se alterne.

Gracias.
  #2 (permalink)  
Antiguo 21/05/2005, 04:21
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Hola Isabel_Maria

antes de nada... deja el código del botón tal y como lo tienes ahora
  #3 (permalink)  
Antiguo 21/05/2005, 04:40
 
Fecha de Ingreso: diciembre-2004
Ubicación: Malaga
Mensajes: 115
Antigüedad: 19 años, 4 meses
Puntos: 0
Hola Tunait.

<script>
var enlace1="links-1.html"
var enlace2="links-2.html"
var destino="cajita"

var i=1;

function cambiar() {
if (i == 1)
{
document.write ('<a href="')
document.write (enlace1)
document.write ('" target="' + destino + '"></a>')
i=2;
}
else
{
document.write ('<a href="')
document.write (enlace2)
document.write ('" target="' + destino + '"></a>')
i=1;
}
}
</script>

onClick="cambiar()"

No tengo el codigo hecho pero esto es lo que se me ocurre. La idea es que tienes una pagina en la que hay un iframe que abre por defecto (link-1). En el mismo iframe se va a poder abrir otro enlace cambiandolo por el anterior (link-2). Para cambiar el enlace link-1 por el link-2 hay un boton en la pagina principal. Este boton al pulsar alternaria el contenido del iframe, es decir el link-1 por el link-2.

Gusto en saludarte de nuevo.
Isabel.
__________________
Directorio de Fotografía
  #4 (permalink)  
Antiguo 21/05/2005, 04:55
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Vale, lo haces con un link, entonces es aún más facil (creí que usabas otro elemento)

entonces podrías hacer algo así

Podrías definir un array con los links que quieras

Código:
<script type="text/javascript">
var enlacillos = new Array('links-1.html','links-2.html')
var cont = 0
function cambia(cual){
   if(cont < enlacillos.length-1){
       cont++
       cual.href = enlacillos[cont]
   }
}
</script>
Y a tu link ponerle algo tipo...

<a href="links-1.html" target="cajita" onclick="cambia(this)"> enlacillo </a>

Cita:
Iniciado por Isabel_Maria
Gusto en saludarte de nuevo.
Lo mismo digo

yá me contarás si te sirvió
  #5 (permalink)  
Antiguo 21/05/2005, 04:58
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
... por cierto que se podría simplificar mucho más de esta forma



<a href="links-1.html" target="cajita" onclick="this.href='links-2.html'"> enlacillo </a>

... y omitir el resto pero de la otra forma puedes usarlo para más links si se diera el caso (los agregas todos al array y te iría pasando de uno en uno)
  #6 (permalink)  
Antiguo 21/05/2005, 05:23
 
Fecha de Ingreso: diciembre-2004
Ubicación: Malaga
Mensajes: 115
Antigüedad: 19 años, 4 meses
Puntos: 0
Bien lo que ocurre es que con ese ultimo metodo no se si luego una vez en el link-2 y al volver a pulsar se cambie por el link-1 pues esta es la idea. Es decir, tienes el 1 pulsas y cambia al 2, vuelves a pulsar y ahora cambia al 1 y asi...
Con el script que enviaste no logro que funcione. En principio al pulsar sale link-1 pero al pulsar de nuevo no lo cambia por el link-2.
__________________
Directorio de Fotografía
  #7 (permalink)  
Antiguo 21/05/2005, 06:17
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
ah, ese detalle no me lo distes

si ha de comportarse como interruptor prueba así

Código:
<script type="text/javascript">
var enlacillos = new Array('http://www.yahoo.es/','http://www.google.es/')
var cont = 0
function cambia(cual){
    cual.href = enlacillos[cont]
	cont = cont == 0 ? 1 : 0;
}
</script>
El evento onclick sucede antes de que el link se active. Es decir, si cambiamos algo en el evento onclick realizará el cambio de href antes de ir a él, con lo que si paramos el mouse sobre el link nos mostrará en la barra de estado el link al que ha ido en vez de mostrarnos el link al que irá y no queda bien (despista)

he observado que en el momento de cargar el link en un iframe el link pierde el foco así que creo que sería más adecuado usar el evento onblur

<a href="http://www.yahoo.es/" target="cajita" onblur="cambia(this)"> enlacillo </a>

Mira a ver si te sirve.

Si no la solución pasaría por cambiar el documento del iframe usando javascript en vez de html (usar cajita.location.href en vez del href del link)

Para que además de funcionar el cambio el link muestre la página destino podría quedar entonces así

Código:
<script type="text/javascript">
var enlacillos = new Array('http://www.yahoo.es/','http://www.google.es/')
var cont = 0, cont2 = 1;
function cambia(cual){
	cajita.location.href = enlacillos[cont]
	cual.href = enlacillos[cont2]
	cont = cont == 0 ? 1 : 0;
	cont2 = cont2 == 1 ? 0 : 1;
}
</script>
... y el link
<a href="http://www.yahoo.es/" target="cajita" onclick="cambia(this);return false"> enlacillo </a>

cambia los links del ejemplo, obviamente, que los puse a yahoo y a google para poder saber qué página estaba llamando en vez de un no se puede mostrar (no tengo documentos con link-1 ni link-2 por nombre

A ver si ahora sí te sirve

Un saludo
  #8 (permalink)  
Antiguo 21/05/2005, 07:18
 
Fecha de Ingreso: diciembre-2004
Ubicación: Malaga
Mensajes: 115
Antigüedad: 19 años, 4 meses
Puntos: 0
La primera solucion funciona perfectamente y probare a poner onblur aunque el link de la barra de estado no me aparece porque tengo un script que lo mantiene fijo con un titulo. Ahora bien, para redondear el tema me he atrevido a añadir al script la posibilidad de cambiar el texto de los botones. De esta manera cambiara no solo el enlace sino que ademas cambiara el texto del boton. Lo he probado y funciona bien todo y quedaria asi.

var enlacillos = new Array('yahoo.com','google.com')
var txtboton = new Array('Este es Yahoo','Este es Google')
var cont = 0
function cambia(cual){
cual.href = enlacillos[cont]
cont = cont == 0 ? 1 : 0;
document.getElementById('botoncito').innerText = txtboton[cont];
}

botoncito seria el ID de la etiqueta A y en txtboton tendriamos los 2 textos de los botones. El cambio del texto se haria en funcion del valor de cont.

Me gustaria que me explicaras del script la linea "cont = cont == 0 ? 1 : 0;"

Gracias.
__________________
Directorio de Fotografía

Última edición por Isabel_Maria; 21/05/2005 a las 09:59
  #9 (permalink)  
Antiguo 21/05/2005, 11:29
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Hola de nuevo

Te sugiero cambies el texto de esta forma

cual.firstChild.nodeValue = txtboton[cont];

en vez de así

document.getElementById('botoncito').innerText = txtboton[cont];

innerText no es standard y no funcionará en algunos navegadores. De la forma que te propongo se usa el DOM y está bien soportado por los navegadores.

Respecto a esta línea

cont = cont == 0 ? 1 : 0;

Es una forma de asignar un valor a una variable usando una forma condicional

El condicional tiene esta sintaxis

se realiza una afirmación o pregunta ? valor en caso de ser verdadero : valor en caso de ser falso;

cont == 0 (afirmación o pregunta; cont es igual a cero?)
Si devuelve true toma el valor situado a la izquierda de los dos puntos (:)
Si devuelve false toma el de la derecha

...y usamos ese condicional para asignar el valor obtenido a una variable

cont = (lo que devuelva el condicional)

¿me expliqué??
  #10 (permalink)  
Antiguo 21/05/2005, 11:49
 
Fecha de Ingreso: diciembre-2004
Ubicación: Malaga
Mensajes: 115
Antigüedad: 19 años, 4 meses
Puntos: 0
Perfectamente bien explicado (como siempre).

Muchas gracias.
__________________
Directorio de Fotografía
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 17:57.