Foros del Web » Programando para Internet » Javascript »

Cambiar atributo "href"

Estas en el tema de Cambiar atributo "href" en el foro de Javascript en Foros del Web. Pos eso, que quiero cambiar periodicamente el href de un link, para que cada x segundos me lleve, al pulsarlo, a una página diferente. ¿Alguna ...
  #1 (permalink)  
Antiguo 17/10/2003, 15:21
Avatar de meru-kun  
Fecha de Ingreso: noviembre-2002
Ubicación: Madrid
Mensajes: 854
Antigüedad: 21 años, 5 meses
Puntos: 0
Cambiar atributo "href"

Pos eso, que quiero cambiar periodicamente el href de un link, para que cada x segundos me lleve, al pulsarlo, a una página diferente.

¿Alguna idea?
  #2 (permalink)  
Antiguo 17/10/2003, 16:23
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 meru-kun:

¡Una idea... !

Si redireccionas una página con el sistema que uses (un meta o javascript) deberías copiar el código en cada página...

La idea...

Tener un frame que ocupe toda la página, y el script que funcione en el "top"...

Saludos
  #3 (permalink)  
Antiguo 17/10/2003, 16:42
Avatar de meru-kun  
Fecha de Ingreso: noviembre-2002
Ubicación: Madrid
Mensajes: 854
Antigüedad: 21 años, 5 meses
Puntos: 0
No entiendo, pero te cuento lo que yo hago :P

Tengo un javascript que me carga un array con el nombre de la web, el href, la imagen, todo eso de una DB.

Lo que quiero es que cada x tiempo, al igual que se cambia el atributo src de la imagen (con javascript¨), se cambie el atributo href del enlace.

Gracias!
__________________
Tu portal de manga y anime.
  #4 (permalink)  
Antiguo 17/10/2003, 16:43
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:

Cuando te preparaba un ejemplo puse un bucle que me obligó a cerrar todo y al abrirlo de nuevo, comprobé que no te había entendido bien.

Retoqué el ejemplo para lo que tu pides:

Código PHP:
<html>
<
head>
<
script language=javascript>
var 
dirs = [
    
"www.forosdelweb.com",
    
"www.sucaricatura.com",
    
"www.maestrosdelweb.com",
    
"www.desarrolloweb.com"
];

function 
slide()    {
    var 
ref dirs[Math.floor(Math.random() * dirs.length)];
    
document.links[0].href ref;
    
setTimeout("slide()"5000);
}
</script>
<title>
    Enlace aleatorio
</title>
</head>
<body onload="slide()">
<a href="prueba141.html">enlace aleatorio</a>
</body>
</html> 
Saludos
  #5 (permalink)  
Antiguo 17/10/2003, 17:00
Avatar de meru-kun  
Fecha de Ingreso: noviembre-2002
Ubicación: Madrid
Mensajes: 854
Antigüedad: 21 años, 5 meses
Puntos: 0
Caricatos, eso es practicamente lo que busco. Siento no saber absolutamente nada de JAVASCRIPT, y así poder terminarlo yo, sin tener que volver a molestarles >_<

Si no me equivoco, con esa funcion se cambian todos los hrefs de la pagina ¿no?

Y otra cosa. No debe ser aleatorio, si no uno tras otro, en el orden en el que lo cargo al array >>_<<.

Muchas gracias de nuevo.
__________________
Tu portal de manga y anime.
  #6 (permalink)  
Antiguo 17/10/2003, 17:21
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Vamos por partes

Con esta línea:

document.links[0].href = ref;

... se cambia el href al primer link (etiqueta a)...

Si no sabes si hay más de un tag "a", puedes poner un atributo name y en vez de poner links[0] puedes poner:

para
<a name=unLink src=...

document.links.unLink.href = ...

Ahora para que no sea aleatorio, tan solo tienes que llevar un contador que se incremente en cada llamada...

<script language=javascript>
var dirs = [
"www.forosdelweb.com",
"www.sucaricatura.com",
"www.maestrosdelweb.com",
"www.desarrolloweb.com"
];

var cuenta = 0;
function slide() {
var ref = dirs[cuenta++ % dirs.length];
document.links[0].href = ref;
setTimeout("slide()", 5000);
}
</script>

Fíjate que cuenta está fuera de la función (en este caso método) y tiene valor 0.
En la linea:
var ref = dirs[cuenta++ % dirs.length];
el valor de cuenta se incrementa después de usarse, entonces la próxima vez valdrá 1.
Al hacer % dir.length, se divide por el número de elementos del array, pero nos quedamos con el módulo.

Bueno, tampoco voy a aburrirte con mucha teoría, pero poco a poco irás mejorando.

Saludos
  #7 (permalink)  
Antiguo 18/10/2003, 07:41
Avatar de meru-kun  
Fecha de Ingreso: noviembre-2002
Ubicación: Madrid
Mensajes: 854
Antigüedad: 21 años, 5 meses
Puntos: 0
Entiendo más o menos. Y comparando con el código que yo tengo... Veo que es más o menos igual (solo que yo además tengo ASP), y no logro ver donde me puedo haber equivocado.
Te pego el código, para ver si tu (o cualquier otro), me supiera decir que me falta, o que me sobra.
Código:
<script language="javascript">

//Aquí cambia los nombres de las imágenes por las tuyas.
var imagenes=new Array()
var linkref=new Array()
<%
  intI = 0
	strSQL = "SELECT * FROM AFILIADOS"
         Set MRA = MyMensConn.Execute(strSQL)
          Do While Not MRA.EOF Or MRA.BOF
		   If intI = 0 Then
		    txtSrcInicial = MRA("IMG")
			txtAltInicial = MRA("ALT")
			txtUrlInicial = MRA("URL")
		   End If
%>
imagenes[<%=intI%>]=new Image (88,32);
imagenes[<%=intI%>].src="<%=MRA("IMG")%>"
imagenes[<%=intI%>].alt="<%=MRA("ALT")%>"
linkref[<%=intI%>]=new Link;
linkref[<%=intI%>.href="<%=MRA("URL")%>"
<%
           intI = intI + 1
          MRA.MoveNext
         Loop
%>


cont=0
function presImagen()
{
if (document.all){
document.getElementById('autoAfiliados').filters.blendTrans.apply()
document.getElementById('autoAfiliados').src=imagenes[cont].src
document.getElementById('autoAfiliados').alt=imagenes[cont].alt
document.getElementById('autoAfiliados').filters.blendTrans.play()
document.getElementById('autoHref').href=linkref[cont].href
}
else
    {
    document.images.autoAfiliados.src = imagenes[cont].src
	document.images.autoAfiliados.alt = imagenes[cont].alt
	document.links.linkref.href = linkref[cont].href
    }
if (cont < imagenes.length-1)
{cont ++}
else
{cont=0}
tiempo=window.setTimeout('presImagen()',5000)
 //cada (5 seg.) cambia la imagen.
}

</script>
Y luego tengo lo siguiente:
Código:
<a href="visitar.asp?cat=afiliados&url=<%=txtUrlInicial%>" name="linkref" 
target=_blank>
<img id="autoAfiliados" src="<%=txtSrcInicial%>" alt="<%=txtAltInicial%>" 
style="filter:blendTrans(duration=3)" 
width=88 height=31 border=0>
  #8 (permalink)  
Antiguo 18/10/2003, 08:11
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:

meru-kun: Lo primero que ví es una definición del Objeto Link que no sé si tienes definido.
Hay un objeto "genérico" que es object, en el que puedes definir cualquier atributo. No sé cuantos objetos hay predefinidos como Image, pero Link creo que no es estandard y por lo tanto deberías definirlo:

function Link(href) {
this.href = href;
}

... o usar el Object.

Saludos

Última edición por caricatos; 18/10/2003 a las 08:13
  #9 (permalink)  
Antiguo 18/10/2003, 09:52
Avatar de meru-kun  
Fecha de Ingreso: noviembre-2002
Ubicación: Madrid
Mensajes: 854
Antigüedad: 21 años, 5 meses
Puntos: 0
No entiendo nada >_<. ¿Objeto link en donde? Si es que no se por que demonois no funcoina, puesto que lo que he hecho ha sido aplicar el código del cambio de Imagen al de Cambio de Href... >>_<<

Me puedes detallar un poco que es eso que no tengo definido >_<

Puse:
linkref[<%=intI%>]=new Object;

Pero me sigue sin funcoinar...
__________________
Tu portal de manga y anime.

Última edición por meru-kun; 18/10/2003 a las 09:53
  #10 (permalink)  
Antiguo 18/10/2003, 09:55
Avatar de meru-kun  
Fecha de Ingreso: noviembre-2002
Ubicación: Madrid
Mensajes: 854
Antigüedad: 21 años, 5 meses
Puntos: 0
Ok. Ya está todo solucionado. Ha sido un despiste mucho más estupido que ese.
Era que se me olvido opner un "]" en la linea
linkref[<%=intI%>.href="<%=MRA("URL")%>"

Siento haberles tenido pendientes para nada.
Muchas gracias por la ayuda y la explicacion, de todas formas.
__________________
Tu portal de manga y anime.
  #11 (permalink)  
Antiguo 18/10/2003, 12:00
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284


Mee alegro de que te funcione. A mi también se me pasó ese detalle, pero probé lo que te dije de los links y fallaba, así que ambos sabemos algo más.

Saludetes
  #12 (permalink)  
Antiguo 23/07/2006, 23:54
 
Fecha de Ingreso: julio-2006
Mensajes: 2
Antigüedad: 17 años, 9 meses
Puntos: 0
me da mucho gusto encontrar la respuesta de lo que estab buscando... muchas gracias... ademas es genial la paciencia que tienen muchachos...
los felicito por su colaboracion..
atte, diego santos
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 14:54.