< Return to Video

Animando el DOM con setInterval (Versión en Video)

  • 0:01 - 0:04
    Tengo esta página web con una imagen de "Oh noes",
  • 0:04 - 0:08
    que está anunciando que el mundo se va a terminar pronto,
  • 0:08 - 0:10
    específicamente en 500 segundos.
  • 0:10 - 0:13
    Quiero hacer que esta página web sea más útil,
  • 0:13 - 0:17
    cambiando este número a una cuenta regresiva en vivo,
  • 0:17 - 0:21
    de manera que los visitantes puedan ver exactamente cuánto tiempo les queda.
  • 0:21 - 0:24
    Ahora, cuando animamos una parte de una página web,
  • 0:24 - 0:27
    la estrategia es encontrar en ella algún elemento,
  • 0:27 - 0:29
    luego cambiar algo de ese elemento,
  • 0:29 - 0:33
    y hacer eso un cierto número de veces por segundo.
  • 0:33 - 0:38
    Así que para el primer paso, voy a encontrar el "countdown" por "Id". (La cuenta regresiva).
  • 0:38 - 0:40
    Sencillo.
  • 0:40 - 0:47
    'var countdown = document.getElementById("countdown");'
  • 0:48 - 0:52
    En el segundo paso, voy a escribir una función que haga un conteo regresivo.
  • 0:52 - 0:55
    'var countItDown = funtion() {'...
  • 0:55 - 0:57
    Y lo que vamos a hacer...
  • 0:57 - 1:01
    Quiero definir el "textContent", y lo quiero definir como
  • 1:01 - 1:04
    el número previo menos uno.
  • 1:04 - 1:07
    Y el "textContent" en realidad es una cadena de caracteres,
  • 1:07 - 1:10
    así que lo tenemos que cambiar a un número.
  • 1:10 - 1:13
    Podemos hacer eso usando "parsefloat()".
  • 1:13 - 1:16
    Y luego le podemos restar uno.
  • 1:16 - 1:22
    Ok, finalmente, queremos llamar esta función en un intervalo,
  • 1:22 - 1:25
    lo que significa: un cierto número de veces por segundo.
  • 1:25 - 1:30
    Y podemos hacer eso usando "window.setInterval()".
  • 1:30 - 1:34
    Y esta función tiene dos argumentos:
  • 1:34 - 1:38
    la función "callback" y el número de milisegundos que tiene que esperar
  • 1:38 - 1:41
    antes de que la función se llame otra vez.
  • 1:41 - 1:43
    Podemos especificar la función de tipo "callback"
  • 1:43 - 1:47
    de la misma manera que lo hicimos con los detectores de eventos: por nombre.
  • 1:47 - 1:50
    Y luego... en realidad ahora está corriendo muy rápido,
  • 1:50 - 1:52
    porque no le hemos especificado el segundo argumento,
  • 1:52 - 1:55
    así que para eso, queremos que sea un cierto número de milisegundos,
  • 1:55 - 1:59
    y queremos que se llame una vez por segundo, así que vamos a escribir: 1000,
  • 1:59 - 2:02
    porque hay 1000 milisegundos en un segundo.
  • 2:02 - 2:05
    Aquí vamos, ahora está contando una vez por segundo.
  • 2:05 - 2:10
    ¡Así que será mejor que aprendas lo más que puedas en los próximos 490 segundos!
  • 2:10 - 2:15
    Hay una función más de "window" que usamos algunas veces en lugar de "setInterval",
  • 2:15 - 2:17
    y es "setTimeout".
  • 2:17 - 2:22
    Y sólo la voy cambiar aquí, a ver si puedes ver la diferencia.
  • 2:22 - 2:24
    Tenemos que esperar un segundo.
  • 2:24 - 2:28
    Ok, ahora probablemente puedas ver que cuando usamos "setTimeout",
  • 2:28 - 2:34
    el navegador sólo llama la función una vez, y no repetidamente.
  • 2:34 - 2:39
    Esto no es tan útil cuando estamos haciendo animaciones.
  • 2:39 - 2:42
    Pero puede ser muy útil en otros casos,
  • 2:42 - 2:46
    como cuando mostramos una bandera de advertencia, y luego la queremos
  • 2:46 - 2:48
    ocultar después de 10 segundos.
  • 2:48 - 2:53
    Así que déjenme regresar esto a "setInterval".
  • 2:53 - 2:57
    Ahora, cuando estamos probando animaciones como ésta,
  • 2:57 - 3:00
    en realidad, deberíamos ver cómo funciona en todos los puntos de la animación,
  • 3:00 - 3:02
    como cuando llega a cero.
  • 3:02 - 3:05
    Bueno, va a tomar mucho tiempo para llegar a cero,
  • 3:05 - 3:07
    y vas a estar muy aburrido, así que
  • 3:07 - 3:11
    vamos a cambiar el dato inicial a 5,
  • 3:11 - 3:13
    y ver qué pasa.
  • 3:13 - 3:17
    Cuatro, tres, dos, uno, cero...
  • 3:17 - 3:19
    uno negativo, dos negativo.
  • 3:19 - 3:22
    Ok, ahora se ve un poco raro.
  • 3:22 - 3:26
    Cuando el mundo se acaba, simplemente debería hacer ¡Kaboom! y dejar de contar.
  • 3:26 - 3:30
    Así que lo que queremos hacer en realidad, es detener esta animación,
  • 3:30 - 3:33
    una vez que llegue a cero.
  • 3:33 - 3:36
    Y podemos hacer eso usando una condición "if" dentro de la función.
  • 3:36 - 3:42
    Así que déjenme empezar por guardar el segundo actual en una variable,
  • 3:42 - 3:45
    porque lo vamos a usar algunas veces.
  • 3:45 - 3:48
    Así que voy a copiar esto y ponerlo aquí,
  • 3:48 - 3:51
    y reemplazar esto con "currentTime".
  • 3:51 - 3:56
    Ahora lo que puedo hacer es poner una condición "if"
  • 3:56 - 4:01
    que nos asegure que sólo actualizará el texto si "currentTime" es mayor que cero.
  • 4:01 - 4:05
    Que es en realidad, cuando queremos que reste uno.
  • 4:05 - 4:10
    Entonces necesito mover esto aquí dentro.
  • 4:10 - 4:15
    Esto funciona, pero en realidad hay algo mal en este enfoque.
  • 4:15 - 4:19
    El navegador sigue llamando a la función "countItDown" una vez por segundo
  • 4:19 - 4:22
    en tanto que esta página web está abierta.
  • 4:22 - 4:25
    No deberías hacer que los navegadores llamaran funciones sin razón,
  • 4:25 - 4:28
    ellos tienen muchas otras cosas importantes que hacer.
  • 4:28 - 4:31
    Lo que en realidad queremos hacer es decirle al navegador que
  • 4:31 - 4:36
    una vez que llegue a cero, no necesita llamar a esta función ni una vez más.
  • 4:36 - 4:40
    Podemos hacer eso usando un nuevo método: "window.clearInterval()".
  • 4:40 - 4:47
    Podemos pegar eso en este "else", aquí, "window.clearInterval()".
  • 4:47 - 4:52
    Ahora, necesitamos pasarle un argumento, para que sepa cuál intervalo debe limpiar.
  • 4:52 - 4:56
    Porque en realidad podríamos tener múltiples intervalos en un página.
  • 4:56 - 4:59
    La manera de saber cuál intervalo limpiar
  • 4:59 - 5:03
    es guardar el resultado de "setInterval" en una variable.
  • 5:03 - 5:08
    Así que ahora que tengo el resultado en la variable "timer", puedo copiar y pegaralo allí,
  • 5:08 - 5:11
    y ahora ya sabe qué limpiar, cuando llegue a cero,
  • 5:11 - 5:16
    debe dejar de actualizar, y debe dejar de llamar a la función.
  • 5:16 - 5:19
    Para cada animación que hagan, deben pensar cuidadosamente
  • 5:19 - 5:22
    cuál debería ser la condición para detenerse.
  • 5:22 - 5:26
    Y sí, probablemente tengan algunas animaciones que deberían correr y correr, amigos,
  • 5:26 - 5:29
    pero más vale que sean animaciones realmente buenas.
  • 5:29 - 5:34
    Porque el navegador estará trabajando cada vez que llamen esa función de tipo "callback".
  • 5:34 - 5:38
    Ahora den vuelta a la página y logren que el mundo haga ¡Kaboom!
Title:
Animando el DOM con setInterval (Versión en Video)
Description:

more » « less
Video Language:
English
Duration:
05:39

Spanish, Mexican subtitles

Revisions