09 Nov Ejercicio JS – Como cargar una imagen aleatoria al clicar un botón
En este ejercicio vamos a modificar los atributos de un nodo del documento web mediante javascript
Vamos a usar los siguientes conceptos.
- Llamar un nodo mediante document.getElementsByTagName().
- Vamos a usar el conocido servicio de internet lorempixel.com
- Vamos a modificar un atributo por acceso directo al «src» o mediante setAttribute()
Te recomiendo esta lectura.
Vamos a repasarlo mediante un ejercicio.
Enunciado
Dado el siguiente código html completa el script para que cada vez que se haga clic en el botón se cargue una nueva imagen de 400px de ancho por 400px de alto.
NOTA: http://lorempixel.com es un conocido servicio de internet que devuelve imágenes aleatorias cada vez.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="description" content="">
<meta name="author" content="Francesc Ricart">
<title>Ejercicio js - imágenes aleatorias</title>
</head>
<body>
<img>
<button onclick="imagenAleatoria()">Generar imagen</button>
<script>
function imagenAleatoria(){
//resolución del ejercicio a rellenar
}
</script>
</body>
</html>
Solución del ejercicio
Este ejercicio es en realidad muy sencillo.
Simplemente debemos
- Identificar y acceder al nodo. Una buena práctica es guardarlo en una variable.
- Acceder al atributo src. Podemos hacerlo de dos formas (observarlas comentadas en el código de la función imagenAleatoria().
- Modificar la url existente por una de nuestro interés.
- Esperar a que cargue la imagen, suele tardar un poco.
- Si tarda demasiado activar la consola del navegador para detectar posibles errores.
¿Como queda el documento html?
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="description" content="">
<meta name="author" content="Francesc Ricart">
<title>Ejercicio js - imágenes aleatorias</title>
</head>
<body>
<img>
<button onclick="imagenAleatoria()">Generar imagen</button>
<script>
function imagenAleatoria(){
var url = "http://lorempixel.com/400/400/"
document.getElementsByTagName("img")[0].src=url;
//document.getElementsByTagName("img")[0].setAttribute("src",url)
}
</script>
</body>
</html>
¡Hola!
Querido lector,
Este ejercicio javascript nos ha servido para practicar la inserción y/o modificación de atributos de una etiqueta HTML de un modo muy simple.
¡Si te ha gustado este contenido te animo a seguirme en mi perfil de empresa de Linkedin!
Entradas relacionadas:
Ejercicio de programación de una venta emergente con el mítico mensaje de Ley de Cookies. Paradójicamente hay que usar una cookie para cumplir con la ley de cookies. Incluye solución.
Ejercicio introductorio a los eventos javascript dónde se limpia un documento html para que no aparezcan eventos en línea con el html mediante addEventListener(). Incluye solución.
Ejercicio de sintaxis javascript nivel principiante sobre objetos (también conocidos como tuplas). Incluye solución y comentarios.
Ejercicio javascript que regula el control de accesos a una página web según edad del visitante. Incluye solución.
Javascript es un lenguaje basado en métodos. Existen muchos métodos predefinidos que afectan a arrays, strings, números y casi cualquier variable de tipo objeto. Veamos un resumen de los más important...
Explicamos como podemos obtener el ancho y la altura real disponibles de la ventana del navegador mediante Javascript puro y con jQuery
Marina Borenstein
Posted at 21:57h, 03 julioBuenas tardes! Muy bueno tu post. Y si quisiera hacerlo con una galería propia de imágenes, como podría hacerlo? Saludos!
Francesc Ricart
Posted at 16:00h, 07 julioHola Marina,
Buena pregunta.
Esta url siempre devuelve una imagen distinta. Pero entiendo que no es lo que tú necesitas.
Para hacerlo en primer lugar escribiría las url de las imágenes en una lista (array).
1) Por ejemplo la variable
imagenes = [url_imagen1, url_imagen2, url_imagen3];
2) a continuación únicamente necesitas generar un número aleatorio. Puedes encontrar en este ejercicio cómo generar un número aleatorio.
3) finalmente únicamente tienes que llamar a
imagenes[i] dónde i es el número aleatorio generado.
PD: otra opción sería llamarlo desde una BBDD junto con php + mysql