Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: pedro,, en 10 de Diciembre 2015, 22:52
-
Hola, otra solución por aquí. Ejercicio CU01171E del tutorial gratuito de programación JavaScript pdf de aprenderaprogramar.
EJERCICIO
Crea una página web que al ser invocada muestre un mensaje “Hemos cambiado de ubicación esta página. En breves momentos será redireccionado…” junto a una cuenta atrás que muestre 5, 4, 3, 2, 1 (correspondiente a 5 segundos). Tras transcurrir 5 segundos y mostrarse la cuenta atrás, el usuario debe ser redireccionada a la url http://aprenderaprogramar.com. Para realizar este ejercicio debes usar la propiedad window.location junto con funciones que permitan el retardo en la ejecución vistas en entregas anteriores del curso.
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo aprenderaprogramar.com</title><meta charset="utf-8">
<script type="text/javascript">
window.onload = function() {
setTimeout(cuentaAtras, 1000);
}
var contador = 5;
function cuentaAtras() {
document.getElementById('datos').innerHTML = 'Hemos cambiado de ubicación esta página. En breve será redireccionado... ' + contador;
document.getElementById('datos').style.fontSize = '66px';
if (contador==0) {
window.location.assign('http://aprenderaprogramar.com');
} else {
contador--;
setTimeout(cuentaAtras, 1000);
}
}
</script>
</head>
<body>
<div id="datos"></div>
</body>
</html>
Saludos.
-
Buenos días Pedro
Veo el código correcto. Como detalle que se puede mejorar, al cargar la página, el mensaje tarda 1 segundo en mostrarse debido a que cuando la página carga le estableces un setTimeout inicial con window.onload = function() { setTimeout(cuentaAtras, 1000); }
Para evitar esa demora en la carga veo preferible escribir window.onload = function() { cuentaAtras(); } quedando el retardo sólo para realizar la cuenta atrás, no para cargar el mensaje inicial.
Saludos
-
Hola Mario, tienes razón, no había ninguna necesidad de retrasar el inicio de cuentaAtras().
Gracias por la apreciación, corregido queda.