Javascript Sas
Javascript Sas
Módulo 2
Javascript
02
§ Scopes
§ Funciones
§ Gestión de eventos
§ JavaScript y DOM: cómo se relacionan HTML, CSS y JavaScript
TypeScript
JavaScript
§ Algunos navegadores no soportan scripts, por lo que ignorarán la marca <script>, pero no
el contenido. La solución es escribir el bloque JS entre los símbolos de comentarios:
<script type="text/javascript">
<!– ocultar script
//código JavaScript -->
</script>
§ Esta opción permite reutilizar el código en otras páginas, por lo que es la recomendable.
<script>
window.alert("Hello world!");
document.write("<p>Hola Mundo!</p>");
</script>
10
11
15 min
12
//Comentarios /*
//de Comentario de bloque
//línea */
Ejemplo: Ejemplo:
13
14
var <identificador>;
var x; var letra; var mensaje; var obj;
15
16
Alcance de var es en
cualquier parte
dentro la función
Alcance de let es
dentro del bloque {}
17
Alcance Global NO NO SÍ
Alcance Función SÍ SÍ SÍ
Alcance Bloque SÍ SÍ NO
Re-asignable NO SÍ SÍ
18
var message = "La cuenta es " + count; Si una variable se declara sin 'var', se
considera global. Esto es no
recomendable.
alert(message);
} Fin bloque
19
20
21
§ Las cadenas son objetos que tienen asociadas algunas funciones y propiedades
predefinidas útiles para su manejo.
§ Para conocer la longitud de un string, es decir, el número de caracteres, se utiliza la
propiedad length:
22
23
Asignación Comparación
24
§ También es posible obtener el tipo interno de una variable, utilizando typeof. Ejemplo:
if (typeof numOne == "number") {
alert("numOne es un number");
}
25
Operadores relacionales:
§ igualdad (==). No confundir con =, que es para asignación.
§ desigualdad (!=)
§ mayor que (>)
§ menor que (<)
§ mayor o igual que (>=)
§ menor o igual que (<=)
26
27
b = 78 + a; //asignación básica
30
34
El mensaje que se
muestra al usuario se
almacene en una
variable llamada
mensaje y el
funcionamiento del
script sea el mismo.
El mensaje mostrado
sea el de la imagen.
var a = false;
var b = true;
var c = true;
Evalúa sólo a, y resulta false
var j = a && (b || c);
Evalúa sólo b, y resulta true
var k = b || (b && c);
Evalúa !b y también el paréntesis, del cual sólo evalúa
b. Resultado se convierte con Boolean(m)
var m = !b & (b || c);
Evalúa !a y también el paréntesis, del cual evalúa b y c.
var n = !a | (b && c); Resultado se convierte con Boolean(n)
36
§ Ejemplo:
Si a es mayor que b, devuelve
max = (a > b) ? a : b; a. En caso contrario, devuelve b
37
Operadores Prioridad
!, +, - (unarios) mayor
*, /, %
+, -
<, <=, >=, >
==, !=
&&
||
= (asignación) menor
38
if (<condición>) { if (<condición1>) {
<instrucciones> <instrucciones>
} else { } else if (<condición2>) {
<instrucciones> <instrucciones>
} }
http://www.w3schools.com/js/js_if_else.asp
39
NÚMERO LETRA
19-20 A
16-18 B
12-15 C
9-11 D
0-8 E
44
NÚMERO LETRA
19-20 A
16-18 B
12-15 C
9-11 D
0-8 E
while (<condición>) { do {
<instrucciones> <instrucciones>
} while (<condición>);
Ejemplo: Ejemplo:
var a = 3; var a = 0;
Pasa al menos
while (a > 0) { do { una vez
alert(a); alert(a);
a--; a--;
} } while (a > 0);
48
49
for(i in dias)
{
alert(dias[i]);
http://www.w3schools.com/js/js_loop_for.asp
}
51
52
var nums = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100];
for (var i=0; i < nums.length; i++) {
//se accede con nums[i]
}
53
var letras = ['T', 'R', 'W', 'A', 'G', 'M', 'Y', 'F', 'P', 'D', 'X', 'B', 'N',
'J', 'Z', 'S', 'Q', 'V', 'H', 'L', 'C', 'K', 'E', 'T'];
§ Otra forma de buscar un elemento recorriendo el array a través del método forEach():
<script>
var dias = ["lunes", "martes", "miércoles", "jueves"];
dias.forEach(function(dato, indice){
document.write("Hoy es " + dato + "indice: " + índice + "<br/>");})
</script>
58
http://www.w3schools.com/js/js_array_methods.asp
59
numero1 = 10;
numero2 = 7;
suma_y_muestra(numero1, numero2);
numero1 = 5;
Formador: Borja Mulleras Vinzia
numero2 = 8;
Funciones
// Definición de la función
function calculaPrecioTotal(precio) {
var impuestos = 1.21;
var gastosEnvio = 10;
var precioTotal = ( precio * impuestos ) +
gastosEnvio;
// percioTotal=38,2414function calculaPrecioTotal(precio) {
} var impuestos = 1.21;
var gastosEnvio = 10;
// Llamada a la función var precioTotal = ( precio * impuestos ) +
gastosEnvio;
calculaPrecioTotal(23.34);
return precioTotal;
}
function mensaje() {
alert("Se ha presionado el botón
'Enviar'");
}
67
68
function suma(x, y) {
return x + y;
}
§ Sintaxis:
Las funciones flecha son siempre anónimas
Sintaxis más limpia y simplificada
https://www.w3schools.com/js/js_arrow_fu 69
nction.asp
0123456789 18 26
str.indexOf("ser"); 0 str.lastIndexOf("es"); 26
70
0123456789
Ubicar posición 2
71
72
§ El método replace admite expresiones regulares (se ven más adelante), lo que flexibiliza su
uso:
Encuentra las minúsculas de Reemplaza la primera
la "a" a la "z" por un "_"
name = "Déjà vu";
name.replace(/[a-z]/, "_"); "Dé_à vu" Reemplaza todas las
minúsculas por un "_"
name.replace(/[a-z]/g, "_"); "Dé_à __"
Reemplaza todas, ignorando
name.replace(/[a-z]/gi, "_"); "_é_à vu" mayúsculas y minúsculas
http://www.w3schools.com/js/js_string_methods.asp 74
75
Bloque de instrucciones:
78
Evento Descripción
blur Cuando el usuario hace click fuera de un campo en un formulario
79
<html>
<head><title>Ejemplo Eventos </title></head>
<body onLoad="alert('Bienvenido!');"
onUnload="alert('Adios!');">
<h1>Página con eventos</h1>
</body>
</html>
80
20 min
81
<body>
<div class="login-page">
<div class="form">
<form class="login-form">
<input type="text" id="username" placeholder="Enter username..."/><br>
<input type="password" id="password" placeholder="Type password..."/><br>
<button type="button">Login</button>
</form>
</div>
</div>
</body>
</html>
20 min
82
Página HTML
JavaScript
JavaScript
Lógica de «El DOM es una (…) interface que permite
window
interacción document a programas y scripts acceder
dinámica location dinámicamente y actualizar el contenido,
estructura y estilo de un documento.»
Definición del W3C
Árbol DOM
83
§ El navegador realiza la tarea de interpretar las etiquetas y genera una estructura (el DOM)
en la que organiza jerárquicamente todos los elementos que conforman el documento
(<html>, <body>, <a>…).
§ La estructura DOM o diagrama en árbol está compuesta por nodos que pueden ser padres,
hijos o hermanos de otros nodos. Existen diferentes tipos de nodo según su contenido.
84
85
<html>
<head>
<title>DOM</title>
</head>
<body>
<h1>DOM</h1>
<p>
Ejemplo <em>árbol DOM</em>
<a href="#">Volver</a>
</p>
</body>
</html>
86
87
88
89
//Contenido HTML
Formador: Borja Mulleras Vinzia
document.getElementById("demo").innerHTML
DOM – Funciones Javascript
<html>
<body>
<p>An unordered list:</p>
<ul>
<li>Coffee</li>
<li>Tea</li>
<li>Milk</li>
</ul>
<button onclick="myFunction()">Try it</button>
<p id="demo"></p>
<script>
function myFunction() {
var x = document.getElementsByTagName("LI");
document.getElementById("demo").innerHTML =
x[1].innerHTML;
}
</script>
Formador: Borja Mulleras Vinzia
</body>
Ejercicios JS15-a
var negrita =
document.getElementById("provisional");
negrita.parentNode.removeChild(negrita);
97
<h1>Dynamic</h1>
<p id="par">
Valor aleatorio: 0 Al presionar el botón, se invoca
</p> la función change()
98
.pnormal {
font-weight: normal;
}
.phigh {
font-weight: bold;
}
99
100
101
.header {
border: 1px solid black;
cursor: pointer;
width: 200px;
height: 30px;
padding: 3px;
background-color: #C0C0FF;
font-size: 1.1em;
}
.content {
border: 1px solid black;
font-size: 0.9em;
width: 200px;
height: 80px;
padding: 3px;
}
.ocultar {
display: none;
} 102
104
§ Resultado:
105
function hidePwd() {
document.getElementById("pwd").innerHTML = "****";
} Vuelve a colocar los **** en el
</script> contenido del párrafo con la clave
106
107
108
109
110
111
MP3 audio/mpeg
WAV audio/wav
OGG audio/ogg
112
§ El elemento <source> permite especificar archivos de audio alternativos entre los que el
navegador puede elegir. El navegador utilizará el primer formato reconocido.
113
MP4 video/mp4
WebM video/webm
Ogg video/ogg
114
115
MPEG .mpg MPEG. Developed by the Moving Pictures Expert Group. The first popular video format on
.mpeg the web. Not supported anymore in HTML.
AVI .avi AVI (Audio Video Interleave). Developed by Microsoft. Commonly used in video cameras and
TV hardware. Plays well on Windows computers, but not in web browsers.
WMV .wmv WMV (Windows Media Video). Developed by Microsoft. Commonly used in video cameras
and TV hardware. Plays well on Windows computers, but not in web browsers.
QuickTime .mov QuickTime. Developed by Apple. Commonly used in video cameras and TV hardware. Plays
well on Apple computers, but not in web browsers.
RealVideo .rm RealVideo. Developed by Real Media to allow video streaming with low bandwidths. Does not
.ram play in web browsers.
Flash .swf Flash. Developed by Macromedia. Often requires an extra component (plug-in) to play in
.flv web browsers.
Ogg .ogg Theora Ogg. Developed by the Xiph.Org Foundation. Supported by HTML.
WebM .webm WebM. Developed by Mozilla, Opera, Adobe, and Google. Supported by HTML.
MPEG-4 .mp4 MP4. Developed by the Moving Pictures Expert Group. Commonly used in video cameras and
or MP4 TV hardware. Supported by all browsers and recommended by YouTube.
Formatos compatibles con el estándar HTML: MP4, WebM y Ogg
116
02
117
objeto.
̎La orientación a objetos será la más importante de las tecnologías que surjan en los años noventa̎
Bill Gates
118
§ Automóvil
§ Marca
§ Modelo
§ Estudiante
§ Nivel
§ Curso
§ Especialidad
119
120
121
var person = {
firstName: "John",
lastName : "Denver", Propiedades del objeto {
id : 12345, "id" :1,
fullName : function() { "name" :"Me",
return this.firstName + " " + this.lastName; "email" : [email protected]
} }
};
122
// person.id
nombreObjeto.nombrePropiedad;
// person["id"]
nombreObjeto["nombrePropiedad"]
// person.fullName()
nombreObjeto.nombreMetodo();
123
Declaración de Declaración de
clases en JS clases en ES6
tradicional
124
Herencia con JS
tradicional
125
126
127
02
128
129
130
131
132
133
134
function leerVentas() {
var url = "http://localhost:1565/DemosJS5/ventas.json";
var request = new XMLHttpRequest();
request.responseType = "application/json"; //Predeterminado
request.open("GET", url); //Solo configura la llamada
request.onload = function() {
if (request.status == 200) { //200 significa correcto.
actualizarIU(request.responseText); }
};
request.send(null);
}
135
function actualizarIU(respuestaJSON) {
var DivVentas = document.getElementById("DIV_ventas");
var ventas = JSON.parse(respuestaJSON);
for (var i = 0; i < ventas.length; i++) {
var venta = ventas[i];
var div = document.createElement("div");
div.setAttribute("class", "FormatoVenta");
div.innerHTML = "Total ventas de " + venta.name + ": " + venta.TVentas;
DivVentas.appendChild(div);
}
}
136
function leerVentas_XHRv1() {
var url = "http://localhost:1565/DemosJS5/ventas.json";
var request = new XMLHttpRequest();
request.open("GET", url);
request.onreadystatechange = function() {
if (request.readyState == 4 && request.status == 200) {
actualizarIU(request.responseText); }
};
request.send(null);
}
137
138
139
140
141
<body>
<form action="valida.html" id="Formulario" >
<p>Almacenamiento de valores de sesión</p>
<input type="text" id="claveini" />
<input type="button" value="Guardar"
onclick="escribirClave('Dato');" /><br />
<input type="text" id="claveLeida" />
<input type="button" value="Leer" onclick="leerClave('Dato');"
/>
</form>
</body>
142
function escribirClave(datos) {
var valor = document.getElementById("claveini").value;
window.sessionStorage.setItem(datos, valor);
}
function leerClave(datos) {
var valor = window.sessionStorage.getItem(datos);
document.getElementById("claveLeida").value = valor;
}
143
§ Existen unos valores de cuota que deberán de ser configurables por el usuario:
sessionStorage localStorage
La persistencia se limita a la página o La persistencia se mantiene incluso
solapa de navegación dentro del sitio después de cerrar el navegador
Los valores almacenados o recuperados Los valores se mantienen entre distintas
solo son visibles desde la página o solapa ventanas o solapas ejecutando el mismo
que los creó. origen URL.
144
localStorage sessionStorage
Stores data with no expiration date Stores data only for a session (until the tab/browser is closed)
Gets cleared through JS or Browser cache / Locally Stored Data Storage limit is larger than a cookie (at least 5 MB). Max 4KB
Changes available for all current and future visits to the site Persists over page reloads and restores.
Opening a new tab/window will initiate a new session.
145
Method Description
setItem() Add key and value to local storage
146
147
148
<h3>Seleccionar fichero(s)</h3>
<p><input id="files-upload" type="file" multiple /></p>
<h3>Ficheros subidos</h3>
<ul id="file-list"><li>(no hay ficheros todavía)</li></ul>
149
<script>
(function () {
// Recuperamos las referencias a los dos elementos implicados
var filesUpload = document.getElementById("files-upload"),
fileList = document.getElementById("file-list");
150
151
02
152
153
154
157
158
159
160
161
162
163