06 Javascript
06 Javascript
Javascript
JavaScript es un lenguaje de programación interpretado. Es
uno de los lenguajes de programación más utilizados hoy en
dia.
#PR en GitHub
https://redmonk.com/sogrady/2022/03/28/language-rankings-1-22/
Javascript ¿para qué?
Algunos ejemplos:
● Validar formularios (lo que no permita HTML5)
alert("mensaje")
http://codepen.io/webUnicen/pen/eZMvzo
Pregunta
El código Javascript incluido se ejecuta automáticamente al
cargar la página
¿Qué pasa si hay dos alert?
A. Se muestran los dos mensajes
segundo
Ver la consola
Menú Chrome >
Más herramientas >
Herramientas Desarrollador
Atajo de Teclado:
● Ctrl + Shift + I
● F12
Consola
Syntax Error
● Algunos errores del código se detectan al cargar el JS
● Otros errores luego de ejecutar esa línea
● Si no se tiene abierta a las “Herramientas de desarrollador”,
no se ven los errores
● SIEMPRE ABRIRLA AL PROGRAMAR JS!
Resumen
Aprendimos a
● Incluir un archivo Javascript y ejecutarlo
http://codepen.io/webUnicen/pen/YZmNwZ
Funciones: Para qué?
Una función le da un nombre a una porción de código
(2) Ocurre un
evento
(3) En respuesta se
ejecuta una parte de
(4) La apariencia código JS
de la página se
actualiza/modifica
de alguna forma
(próximos paso)
Eventos
● Los eventos son capturados por manejadores (handlers).
Evento
• HTML
<button onclick="saludar();">Saludar</button>
● Javascript
https://codepen.io/webUnicen/pen/VXWbWL
Eventos
Ejemplos de eventos:
• onclick
• onkeydown
• onload
• onfocus
• onchange (recomendado para selects)
• ondrag
• oncopy
• onpause(para media)
Código
de Ev 1 Ev 2 Ev 3
Inicio
Código
de Ev 2 Ev 1
Inicio Ev 3
Código
de Ev 3 Ev 2 Ev 2 Ev 2 Ev 1
Inicio
Resumen
Aprendimos a
● Usar un evento
Constantes:
● Son un nombre que le damos a un valor
<li id="prim">Primero</li>
<li id="seg">Segundo</li>
Al documento
DOM - Edición
<li id="prim">Primero</li>
<li id="seg">Segundo</li>
<li id="prim">Primero</li>
<li id="seg">Segundo</li>
function ActualizarSaludo() {
//lee el nombre PIDE NODO
let nodoInput = document.getElementById("txtNombre");
let nombre = nodoInput.value; LEE VALOR
//lo muestra en consola (opcional, para debug)
console.log(nombre);
//lo muestra en el DOM PIDE NODO
let nodoSaludo = document.getElementById("txtSaludo");
nodoSaludo.innerHTML = "Hola " + nombre; ESCRIBE VALOR
}
https://codepen.io/webUnicen/pen/geRRLe
Resumen DOM
Las propiedades del DOM (HTML) se pueden leer/editar
desde Javascript.
Contenido
Tag (innerHTML) Cierre de Tag
SO
<p ddd="cosa">Esto es un párrafo</p>
PA
RE
Atributos Elemento (lo buscamos en el DOM)
Naming
● Variables:
○ se nombran con sustantivos
● Funciones:
○ Comienzan con verbos
○ En el caso de funciones booleanas, deben comenzar con
"is", ej: isValid()
● Usar nombres descriptivos
○ nunca son demasiado largos!
● Evitar nombres sin significado como "aux" y "temp"
Variables
● Las variables pueden declararse de forma implícita.
● La primera vez que uso una variable se declara
“automáticamente”.
numero = 2; //declaró variable número mágicamente
let nombre = "Pepe";
…
nombbre = "Juan"; //error, tipeo mal la variable
//crea una variable global nueva
alert(nombre) //imprime Pepe
Use Strict
● Es una buena práctica escribir al comenzar un archivo
Javascript
"use strict";
○ Manipular el DOM
● Usar otro evento (que no es onclick)
Debug
Debug
Debug es el término conocida para encontrar los errores de
un programa y solucionarlos.
DEBUG
DE(lete) BUG
“Eliminar Bichos”
Consola
Escribir por consola
https://codepen.io/webUnicen/pen/ZZzgxv
Programa correcto
No
recomendado
Eventos
JS
let btn = document.getElementById("btn-enviar");
btn.addEventListener("click", verificarFormulario);
La función sin ()
No la está llamando en esta sentencia
CLICK!
Le dice que función llamar (después)
https://developer.mozilla.org/en-US/docs/Web/API/Even
tTarget/addEventListener#Why_use_addEventListener
Editar estilo desde Javascript
Para editar los estilos desde Javascript podemos modificar las
clases de los elementos del DOM
alert(div.classList.contains("clase"));
Buena Práctica!
Cambiar estilos con clases
https://codepen.io/webUnicen/pen/qmVoMV
Resumen: conexión entre HTML, CSS y JS
● La única conexión debieran ser las clases
● Las clases son el contrato entre los tres lenguajes
● En lo único que se tienen que poner de acuerdo es en qué
significa cada clase
○ HTML le va a poner las clases a lo que corresponda
○ CSS va a hacer que se vea como dice el acuerdo
○ JS va a hacer que se comporte como dice el acuerdo
● El nombre de la clase debe ser representativo de este
contrato
Resultado
"use strict";
function prender() {
document.querySelector("body").classList.add("prendido");
document.querySelector("body").classList.remove("apagado");
document.querySelector("#lampara").src = "img/lampara_on.png";
}
CAMBIA CLASES Y SRC DE LA IMAGEN
function apagar() {
document.querySelector("body").classList.remove("prendido");
document.querySelector("body").classList.add("apagado");
document.querySelector("#lampara").src = "img/lampara_off.png";
}
document.querySelector("#btnPrender")
.addEventListener("click", prender);
document.querySelector("#btnApagar")
.addEventListener("click", apagar);
https://codepen.io/webUnicen/pen/eoYOZP
Extra
Funciones con parámetros
function saludar(nombre)
{ parámetro
formal
alert("Hola" + nombre);
}
saludar("Javier1");
saludar("Javier2");
parámetro real,
o “lo que le
paso como
parametro”
Eventos y parámetros
function sumarCinco(evento){
sumar(5);
}
function sumar(cantidad)
{
... https://codepen.io/webUnicen/pen/qmZOaV
Prendamos y apaguemos con el teclado
● Detectar “key-press”
● Según la tecla prender o apagar
Resumen
Aprendimos a
● Cambiar el estilo desde Javascript
○ classList
● Agregar eventos desde Javascript
○ Y así poder no tener nada de Javascript en el archivo HTML
Resumen!
RESUMEN JAVASCRIPT
● Agregamos script con ruta al archivo JS al HTML
● Obtenemos el/los elementos del DOM que va a tener
eventos
● Le decimos el/los elemento que función debe ejecutar en
que evento (addEventListener)
● Programamos las funciones
○ Obtenemos los datos que necesitemos del dom
○ Procesamos
○ Actualizamos el DOM
p l o d e
E j e m
r á c t i c a
la p
Ejemplo
Hacer una aplicación web que al apretar un botón simule el
lanzamiento de dos dados, sumarlos y que muestre en el
HTML si salió 8.
Qué vamos a aprender
Qué vamos a aprender?
● Generar un número aleatorio utilizando funciones
matemáticas de JS
● Uso de estructuras de control
○ if
● Cómo comparar y formas de comparar
¿Qué tenemos que hacer?
Lo primero que tenemos que hacer es analizar el problema y
separarlo en partes pequeñas que sean más fáciles de
resolver
Analicemos el problema
- Crear el html
- Un boton que sea lanzar dado
- Dos imagenes para mostrar los dados
- funcion Lanzar
- Verificar con el IF el resultado
Random
● Para generar números al azar podemos usar
Math.random();
Así obtenemos un número al azar entre 0 y 1 (0 inclusive, 1 no).
Las caras de un dado son del 1 al 6, ¿cómo hacemos?
Ejemplo: http://codepen.io/webUnicen/pen/RaMpoV
Más info: https://developer.mozilla.org/en-US/docs/Web/JavaScri...
Random
● Podemos utilizar también la función matemática
Math.floor();
Math.floor((Math.random() * 6) + 1);
http://codepen.io/webUnicen/pen/RaMpoV
https://developer.mozilla.org/en-US/docs/Web/JavaScri…
Random
Arrancamos del random
0 <= Math.random() <= 0.9999999
Multiplico por 6
0 <= Math.random() * 6 <= 5.9999999
Sumo 1
1 <= Math.random() * 6 + 1 <= 6.9999999
Aplico floor
Math.floor((Math.random() * 6) + 1) ∈ {1,2,3,4,5,6}
http://codepen.io/webUnicen/pen/RaMpoV
https://developer.mozilla.org/en-US/docs/Web/JavaScri…
Mostrar imágenes de los dados
Debo mostrar la imagen del dado que corresponde
al número que salió.
dado1.png
dado6.png
http://tudai1-1.alumnos.exa.unicen.edu.ar/web-1/material/archivos/
http://tudai1-1.alumnos.exa.unicen.edu.ar/web-1/material/archivos/dado1.png
Mostrar imágenes de los dados
Debo generar un string con el nombre de la imagen
que se corresponda con el número del dado que salió.
document.getElementById("dado1").src = "images/dado"+d1+".png";
http://tudai1-1.alumnos.exa.unicen.edu.ar/web-1/material/archivos/
https://codepen.io/webUnicen/pen/bvXWxo
Resolviendo el problema
if(condicion) {
// codigo SI se cumple
// la condicion
}
else {
// codigo si la condicion
// NO se cumple
}
Operadores de comparación
● = Asignación
let materia = “Web”
● == Igualdad (!=)
○ Convierte tipos
if( 5 == “5”) {
//true
}
● === Identidad (!==)
if( 5 === “5”) {
//false
}
Siempre usar ===
● Recordemos que (==) hace conversión automática de tipos
● A veces el resultado de esta conversión no es obvia.
● Evitar esto usando (===)
● Lo mismo para != (usar !==)
Uso de ; en Javascript
● El ; es opcional, pero es una buena práctica usarlo.
● Obligatorio cuando minificas el script.
Siempre usar ;
Resultado
https://codepen.io/webUnicen/pen/yrLBdr
Resumen
Aprendimos a
● Generar un número aleatorio en JS
https://codepen.io/webUnicen/pen/jROOOd
Resumen
Aprendimos a
● Ejecutar N veces las mismas sentencias (iterar)
○ “for”
Más Información
Libros
● Javascript and Jquery : Interactive Front-End Web Development, Jon Duckett
Willey 2014
● Learning Web Design: A Beginner's Guide to HTML, CSS, JavaScript, and Web
Graphics, Jennifer Niederst Robbins O'Reilly Media 2012
● Standard: http://standardjs.com/rules.html
● Tutorial W3 Schools: http://www.w3schools.com/js/
● Javascript from birth to closure
Eventos
● http://www.elcodigo.net/tutoriales/javascript/javascript5.html
● http://dev.opera.com/articles/view/handling-events-with-javascript-es
AHORA LES TOCA PRACTICAR :D