WE 06 Javascript
WE 06 Javascript
© Copyright 2019 Edwin Valencia 1
Que hemos aprendido?
© Copyright 2019 Edwin Valencia 2
Hoy: JavaScript
© Copyright 2019 Edwin Valencia 3
Desarrollo Front - end
https://www.upwork.com/hiring/development/front-end-developer/
© Copyright 2019 Edwin Valencia 4
Que es JavaScript?
© Copyright 2019 Edwin Valencia 5
JavaScript afecta el comportamiento de una web page
via manipulación del documento en el browser
que la pagina es
cargada Javascript
embebido en la
pagina web es
“ejecutada” por
el browser
© Copyright 2019 Edwin Valencia 6
Que se puede hacer con JavaScript
Menus en cascada
Modificar imagenes on mouse “rollover”
Validar forms antes de enviarlos al servidor
Num of chars, non-blank input, non-alpha numerics,
etc
Efectos de fondo (color, musica)
Aplicaciones “Simples”
Calendarios, calculadoras de pagos, etc
Aplicaciones “Complejas”
Google docs
Gmail
Facebook
© Copyright 2019 Edwin Valencia 7
Como se enlaza código JavaScript
<!DOCTYPE html>
<html>
<head>
<script>
// Javascript code can be placed in the <head> or <body>
// of an HTML document; other locations are not recommended
</script>
<charset=“UTF-8" />
<title>Example Javascript</title>
</head>
<body>
<script src=“demo.js”>
/* Javascript can be placed inline or in an external .js file */
</script>
</body>
</html>
© Copyright 2019 Edwin Valencia 8
Javascript es un lenguaje de programacion completo de alto
nivel, con elementos familiares
• Variables
• Constantes
• Expresiones
• Sentencias de control condicional (if, else if, switch)
• Bucles e iteraciones (for, while, do…while)
• Manejo de excepciones (try-catch)
Pero tambien algunos conceptos no familiares:
• Clases no formales (en su lugar usa prototipos)
– En JS6 hay manejo de clases
• Tipado debil
• Functiones fuera de objetos
• Variables globales
© Copyright 2019 Edwin Valencia 9
La primera sentencia JavaScript
// single-line comment
/* multi-line comment */
© Copyright 2019 Edwin Valencia 15
Bucle for (igual que java)
© Copyright 2019 Edwin Valencia 16
Objeto Math
var rand1to10 = Math.floor(Math.random()*10+1);
var three = Math.floor(Math.PI);
© Copyright 2019 Edwin Valencia 17
Operadores logicos
© Copyright 2019 Edwin Valencia 18
Tipo Boolean
© Copyright 2019 Edwin Valencia 19
Valores especiales: null y undefined
© Copyright 2019 Edwin Valencia 20
Sentencias if/else (igual a java)
if (condition) {
statements;
} else if (condition) {
statements;
} else {
statements;
}
© Copyright 2019 Edwin Valencia 21
Bucle While (igual a java)
while (condition) { do {
statements; statements;
} }while(condition);
© Copyright 2019 Edwin Valencia 22
Arrays
© Copyright 2019 Edwin Valencia 23
Metodos de un Array
© Copyright 2019 Edwin Valencia 24
Dividiendo cadenas: split y join
© Copyright 2019 Edwin Valencia 25
Definiendo funciones
© Copyright 2019 Edwin Valencia 28
Botones: <button>
© Copyright 2019 Edwin Valencia 29
Accesando a un elemento:
document.getElementById
© Copyright 2019 Edwin Valencia 30
document.getElementById: Ejemplo
function changeImage() {
var pokeballImg = document.getElementById("icon01");
pokeballImg.src = "images/mystery.gif";
}
© Copyright 2019 Edwin Valencia 31
Document Object Model – DOM
<html>
<head>
<title> ... </title>
</head>
<body>
<h1> ... </h1>
<div>
<p> ... </p>
</div>
</body>
</html>
© Copyright 2019 Edwin Valencia 32
Documento Object Model (DOM)
© Copyright 2019 Edwin Valencia 33
Como obtener los elementos DOM en JS
© Copyright 2019 Edwin Valencia 34
Obteniendo un elemento DOM en JS
<p id="october"></p>
© Copyright 2019 Edwin Valencia 35
Que hay dentro de un objeto DOM?
© Copyright 2019 Edwin Valencia 36
Que hay dentro de un objeto DOM?
© Copyright 2019 Edwin Valencia 37
Propiedad inerHTML
© Copyright 2019 Edwin Valencia 38
Que podemos hacer con los objetos DOM?
© Copyright 2019 Edwin Valencia 39
DOM properties for form controls
output
© Copyright 2019 Edwin Valencia 40
Adjusting styles with the DOM
objectName.style.propertyName = "value"; JS
<button onclick="colorIt();">Click me!</button>
<span id="fancytext">Don't forget your homework!</span>
HTML
function colorIt() {
var text = document.getElementById("fancytext");
text.style.color = "#ff5500";
text.style.fontSize = "40pt";
} JS
output
Property Description
style lets you set any CSS style property for an element
• same properties as in CSS, but with camelCasedNames, not names‐with‐
underscores
• examples: backgroundColor, borderLeftWidth, fontFamily
© Copyright 2019 Edwin Valencia 41
Common DOM styling errors
clickMe.style.width = 200;
clickMe.style.width = "200px";
clickMe.style.padding = "0.5em"; JS
• Escriba exactamente el valor que ha escrito en el CSS, pero entre comillas.
© Copyright 2019 Edwin Valencia 42
JavaScript no intrusivo
<button onclick="okayClick();">OK</button>
// Llamado cuando el boton OK es clicked
function okayClick() {
alert("booyah");
© Copyright 2019 Edwin Valencia 44
Enlazando un manejador de eventos en código JS
objectName.onevent = function;
<button id="ok">OK</button>
© Copyright 2019 Edwin Valencia 46
Intento fallido por ser no intrusivo
<html>
<head>
<script src="myfile.js"></script>
</head>
<body>
<div><button <em>id="ok"</em>>OK</button>
</div>
var btn = document.getElementById("ok");
(... more html ...)
btn.onclick = okayClick;
// this is bad: btn is null at this point
function functionName() {
// colocar codigo para inicializar la pagina
}
// indicar a la ventana para ejecutar la function cuando
la pagina es cargada:
window.onload = functionName;
© Copyright 2019 Edwin Valencia 49
Errores comunes en JS no intrusivo
• Los nombres de los eventos son todos en minuscula, no capitalizados
como en la mayoria de las variables
window.onLoad = pageLoad;
window.onload = pageLoad;
• No debes escribir () cuando enlazas el manejador (Si lo haces, éste
llama a la function inmediatamente, en lugar de configurarlo para que
lo llame mas tarde)
ok.onclick = okayClick();
ok.onclick = okayClick;
• Nuestro verificador JSLint lo identificará como error
• Relacionado: no se puede llamar directamente a las funciones como
alert; deben estar encerradas en su propia funcion
ok.onclick = alert("booyah");
ok.onclick = okayClick;
function okayClick() { alert("booyah"); }
© Copyright 2019 Edwin Valencia 50
Funciones anonimas
function(parameters) {
... statements ...;
}
• JavaScript permite declarar funciones
anónimas
• Crea rapidamente una función sin darle un
nombre
• Puede ser almacenada como una variable,
enlazada como un manejador de eventos,
etc.
© Copyright 2019 Edwin Valencia 51
Ejemplo de funciones anonimas
window.onload = function() {
var ok = document.getElementById("ok");
ok.onclick = okayClick;
};
function okayClick() { alert("booyah"); }
window.onload = function() {
document.getElementById("ok").onclick = function() {
alert("booyah");
};
};
© Copyright 2019 Edwin Valencia 52
Estilizado no intrusivo
function okayClick() {
this.style.color = "red"; // <-- bad style
this.className = "highlighted"; // <-- better style
}
© Copyright 2019 Edwin Valencia 54
Encerrar el código en una función
function everything() {
var count = 0;
function incr(n) {
count += n;
}
function reset() {
count = 0;
}
incr(4);
incr(2);
console.log(count);
}
everything(); // call the function to run the code
© Copyright 2019 Edwin Valencia 55
El “module pattern”
(function() {
statements;
})();
(function() {
var count = 0;
function incr(n) {
count += n;
}
function reset() {
count = 0;
}
incr(4);
incr(2);
console.log(count);
})();
© Copyright 2019 Edwin Valencia 57
JavaScript modo estricto
"use strict";
...your code...
(function() {
window.onload = function() {
// Coloca aquí tu código
};
})();
© Copyright 2019 Edwin Valencia 59