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:
Para poder sustituir un nodo por otro en el DOM previamente necesitas saber como: Identificar nodos del DOM. Crear nuevos nodos. Si tienes claros estos conceptos sigue leyendo el ejemplo práctico.
Es normal que dudemos entre si debemos usar un while o un for. Se trata de dos estructuras iterativas muy parecidas. ¿Qué debemos elegir?
En este ejercicio practicamos la diferencia entre usar un string y una variable. También otras normas básicas de sintaxis de javascript.
Este es un simple ejercicio cuyo objetivo es únicamente coger un poco de soltura usando expresiones típicas en javascript.
Ejercicio javascript dónde se practica el uso de for y de while para la resolución de un mismo problema JS. Incluye solución.
Un ejemplo de switch(){} en Javascript bien construido y otro con un pequeño pero grave error explicado paso a paso.
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