Enlaces al azar

En este script se usa una lista de enlaces para escoger uno al azar y mostrarlo en la página web.

Es útil se quieres cambiar enlaces a páginas diferentes cada vez que se acrgue la página.

Solución

<script>

function linkAzar(lnk){

var enlaces = new Array(), ind;

var cuadro;

var total = 4, cadena

for (ind=0; ind<total; ind++)

enlaces[ind] = new Array()

enlaces[0][0] = "https://misitio/pagina1.htm"

enlaces[0][1] = "Pulsa para la página 1"

enlaces[1][0] = "https://misitio/pagina2.htm"

enlaces[1][1] = "Pulsa para la página 2"

enlaces[2][0] = "https://misitio/pagina3.htm"

enlaces[2][1] = "Pulsa para la página 3"

enlaces[3][0] = "https://misitio/pagina4.htm"

enlaces[3][1] = "Pulsa para la página 4"

ind = Math.round(Math.random()*3)

cuadro = document.getElementById(lnk)

cuadro.innerText = enlaces[ind][1];

cuadro.setAttribute('href', enlaces[ind][0]);

}

</script>

<body onload="linkAzar('enlace')">

<a href="#" id="enlace">Enlace</a>

</body>

Explicación

La función linkAzar() pone un enlace al azar en la página web cuando se carga.

La función crea un array de dos dimensiones: cada elemento es una lista de dos elementos:

  • la primera es el enlace en sí (la dirección URL) y
  • la segunda es el texto que debe aparecer en el enlace.

Luego la función elige al azar un elemento de esa lista: Math.random()*3 dará como resultado un número al azar entre 0 y 3.

El método Math.round() se usa para redondear a un entero el índice obtenido.

Por último se anota el texto y el src en el elemento de la web que hemos seleccionado para anotar el array. Fácil ¿verdad?

Como lo uso

En la página web crea el elemento enlace (<a href>) con un identificador, atributo id.

Al cargar la página (onload) se llama a la función que se encarga de colocar el url y el texto del enlace. La función se llama con el valor del id del enlace como argumento.

No es imprescindible que se l<lma desde un evento load, puedes hacerlo de cualquier otra forma como mediante un click en un botón o tras la carga de una imagen...