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){

   let enlaces = new Array(), ind;

   let cuadro;

   let 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)
  • 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 llame 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...