Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Javascript
básico y
ejemplos
1
JavaScript
• Lenguaje de script para la creación de páginas web
dinámicas
• Ejecución de código en el lado del cliente
• Creación de visualizaciones más atractivas y mayor interactividad
• Podemos cambiar el aspecto de una página sin recargarla
• Lenguaje interpretado (no se compila)
• El navegador se encarga de interpretar y ejecutar el código
JavaScript
• JavaScript NO es Java, no tiene nada que ver
• Múltiples frameworks y tecnologías
• JQuery, MooTools, etc.
• JSON (JavaScript Object Notation) para transmisión de datos
• Ajax
• JavaScript en el servidor (tendencia en auge): Node.js
main.js
console.log("Hola Mundo JavaScript");
• Dentro de los elementos (generalmente para manejar eventos o para escribir código
dentro de la página). Es menos mantenible.
7
getElementByd, innerHTML
Método getElementById: La forma más común de tener acceso a
un elemento HTML es usar el identificador del elemento
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML = "Hello World!";
</script>
• Números
• Internamente las operaciones se realizan en punto flotante
• Representación:
• Enteros: 0, -1, 44, ...
• Decimales (float): 0.20, 3.1415, -3.23e+6
• Hexadecimal, empiezan por 0x: 0xFF, 0x1A
• Valores lógicos (Booleanos)
• true y false
• Strings
• Secuencia de caracteres entre comillas dobles " o simples '
• Secuencias de escape, para representar caracteres especiales:
• \' Comilla simple \" Comilla doble
• \f Salto de página \n Salto de línea
• \t Tabulación \\ Barra inclinada \
https://www.w3schools.com/js/js_variables.asp
• Asignación
• Guarda un valor específico en una variable
• var x = 0;
• Expresiones numéricas
• Operadores aritméticos:
• + , ++, -, --, *, /, % (módulo), ^ (exponenciación)
• +=, -=, *=, /=, ^=, %=
• Expresiones lógicas
• Operadores lógicos: && (and), || (or), ! (not)
https://www.w3schools.com/js/js_operators.asp
• Booleanos
"" == false // true, pero false con ===
0 == false // true, pero false con ===
https://www.w3schools.com/js/js_output.asp
https://www.w3schools.com/js/js_popup.asp
21
Mensajes emergentes: prompt
var person = prompt("Please enter your name", "Harry Potter");
https://www.w3schools.com/js/tryit.asp?filename=tryjs_prompt
22
Control de flujo – Instrucciones condicionales
• Instrucciones condicionales
• if
if ( condición ) { // 0, "" y null equivalen a false
// Instrucciones
}
else { //También else if
// Instrucciones
}
• switch
switch ( expresión ) {
case valor1:
// Instrucciones caso 1
break; // para acabar el switch
case valor2:
// Instrucciones caso 2
break;
default: // opcional
// Instrucciones si no se diera ningún caso
}
Tema 5.1: Código en el cliente - El lenguaje Javascript 23
Ejemplo
var adivinar = 50;
var numeroUsuario = prompt("Adivina qué número estoy pensando");
if (numeroUsuario==adivinar) {
alert("Has acertado");
}
else if (adivinar < numeroUsuario) {
alert("Lo siento mi número era menor");
}
else {
// Si no es igual ni menor entonces es mayor
alert("Lo siento mi número era mayor");
}
• Bucles
• for for (var i=0; i<array.length; i++) {
procesa(array[i]);
}
var i;
var n = 10;
alert("Contemos hasta "+n);
for (i=1; i<=n; i++) {
alert(i);
};
• for … in
for (i in array) {
procesa(array[i]);
}
Tema 5.1: Código en el cliente - El lenguaje Javascript 25
Bucle for
var text = "";
var x;
for (x in person) {
text += person[x];
}
https://www.w3schools.com/js/js_loop_for.asp
Tema 5.1: Código en el cliente - El lenguaje Javascript 26
Bucle while
while (cars[i]) {
text += cars[i] + "<br>";
i++;
} https://www.w3schools.com/js/js_loop_while.asp
Tema 5.1: Código en el cliente - El lenguaje Javascript 27
Control de flujo
• Bucles
• while while( condicion ) {
//Cuerpo del bucle
}
• do ... while
do {
//Cuerpo del bucle
} while( condición )
}
// Si estoy fuera del bucle es porque el usuario ha adivinado el número
alert("Has acertado");
• Excepciones: try..catch
try {
// Código a ejecutar
}
catch(err) {
// Gestión de errores
}
• Propiedades y métodos
• length: número de elementos de un array
• Permite añadir un elemento nuevo al array
• colores[colores.length] = "Morado";
• concat(): concatenar los elementos de varios arrays
• a1 = [1, 2, 3];
• a2 = a1.concat(4, 5, 6); // a2 = [1, 2, 3, 4, 5, 6]
• a3 = a1.concat([4, 5, 6]); // a3 = [1, 2, 3, 4, 5, 6]
• pop(): elimina y devuelve el último elemento del array
• push(elemento): añade un elemento al final del array
• shift(): elimina y devuelve el primer elemento del array
• unshift(elemento): añade un elemento al principio del array
• Clasificación en arrays
• sort(): clasifica los elementos del array alfabéticamente
• reverse(): clasifica los elementos del array en orden inverso
• Por defecto trabajan con los datos como strings
var numeros = [12, 323, -1, 9, 0, 12];
numeros.sort(); // -1,0,12,12,323,9
lote.sort(function(a, b) {
return a-b;
});
// Ahora deberíamos ver el orden esperado
for (i=0; i < lote.length; i++) {
console.log(lote[i]+ " ");}
resultadolote.splice(1,2, "otro", "número");
// El final es un array que mezcla números y cadenas
Tema 5.1: Código en el cliente - El lenguaje Javascript 38
Strings
• Métodos:
• Length: Longitud
• Indexof: Posición donde se encuentra la primera ocurrencia
• LastIndexof: Posición donde se encuentra la última ocurrencia
Javascript considera la primera posición como 0
var str = "Please locate where 'locate' occurs!";
var pos = str.indexOf("locate"); devuelve 7
var sln = txt.length;
var pos = str.lastIndexOf("locate"); devuelve 21
https://www.w3schools.com/js/js_string_methods.asp
Tema 5.1: Código en el cliente - El lenguaje Javascript 39
Extraer partes de un string
• slice(start, end)
• substring(start, end)
• substr(start, length)
<p id="demo"></p>
<script>
var x = myFunction(4, 3);
document.getElementById("demo").innerHTML = x;
function myFunction(a, b) {
return a * b;
}
</script>
</body>
</html> Tema 5.1: Código en el cliente - El lenguaje Javascript 48
Funciones
function multiplicar(a, b) {
var prod = 0; La probamos en
var i = 1; la consola
while (i <= b) { javascript del
prod += a;
i++; navegador
}
return prod;
};
console.log(multiplicar(2, 3));
console.log(multiplicar(10, 100));
var x = 10;
var y = 20;
intercambiar (x,y);
console.log(x);
console.log(y);
function max( ){
var m = Number.NEGATIVE_INFINITY;
for(var i = 0; i < arguments.length; i++)
if (arguments[i] > m)
m = arguments[i];
return m;
}
...
max(10,30,42,21,19);
https://www.w3schools.com/js/js_timing.asp
56
Ejemplo de setinterval y clearinterval
…. Ejemplo 07
<p id="demo"></p>
<button onclick="clearInterval(myVar)">Para el reloj</button>
<script>
var myVar = setInterval(myTimer ,1000);
function myTimer() {
var d = new Date();
document.getElementById("demo").innerHTML = d.toLocaleTimeString();
}
</script>
…
57
Ejemplos de utilización
function showSlides() {
var i;
var slides = document.getElementsByClassName("mySlides");
for (i = 0; i < slides.length; i++) {
slides[i].style.display = "none";
}
slideIndex++;
if(slideIndex > slides.length) {slideIndex = 1}
slides[slideIndex-1].style.display = "block";
setTimeout(showSlides,3000);
https://www.w3schools.com/howto/tryit.asp?filename=tryhow_js_slideshow_auto
} 59
• Portfolio gallery
https://www.w3schools.com/howto/howto_css_portfolio_gallery.asp
• Slideshow gallery
https://www.w3schools.com/howto/howto_js_slideshow_gallery.asp
• Menú superior
https://www.w3schools.com/howto/howto_js_full_page_tabs.asp
• Search menu
https://www.w3schools.com/howto/howto_js_search_menu.asp
60
Validación de formularios
• https://www.w3schools.com/js/js_validation.asp
61
Validación datos
<script>
Ejemplo 02
function validateForm() {
var x = document.forms["myForm"]["fname"].value;
if (x == "") {
// Aquí irían las validaciones
alert("Name must be filled out");
return false;
}
}
</script>
</head>
<body>
<form name="myForm" action="/action_page.php" onsubmit="return validateForm()"
method="post">
Name: <input type="text" name="fname"> <input type="submit" value="Submit"> 62
Variables
var m = "exterior";
function muestraMensaje() {
m = "interior";
console.log(m);
}
console.log(m);
muestraMensaje();
console.log(m);
Tema 5.1: Código en el cliente - El lenguaje Javascript 64
Ámbito de las variables
• Argumentos de una función
• Son sólo visibles dentro de la función
• Caso especial: las funciones anidadas tienen acceso a todas las variables y argumentos
de la función que la contiene
function multiplicar(a, b) {
var prod = 0;
var i=1;
while (i<=b) {
sumar();
incrementar();
}
return prod;
};
Tema 5.1: Código en el cliente - El lenguaje Javascript 65
Retrollamadas (callbacks)
avisar = function() {
console.log("Por fin aparezco!");
}
setTimeout(avisar, 2000);
console.log("El callback no detiene la ejecución");
function darLaPlasta() {
var count = 0;
var funcionPlasta = function() {
count++;
console.log("He aparecido " + count + " veces!");
if (count >= 5)
clearInterval(intervalId);
}
var intervalId = setInterval(funcionPlasta, 1000);
}
darLaPlasta();
• var persona = {
firstName: “Carlos",
lastName : “Cervi",
id : 4444,
fullName : function() {
return this.firstName + " " + this.lastName;
}
};
this se refiere al propietario de la función (en
este caso el objeto persona)
Carlos Cervi
name = person.fullName;
var flight = {
airline: "Oceanic",
number: 815,
departure: {
IATA: "SYD",
time: "2004-09-22 14:55",
city: "Sydney"
},
arrival: {
IATA: "LAX",
time: "2004-09-23 10:42",
city: "Los Angeles"
}
};
for (x in persona) {
console.log(x + " :" + persona[x]);
}
persona.apellidoNombre = function () {
return this.apellido + ", " + this.nombre;
};
• Definir un constructor
• Como función independiente, no existen clases
this.renombra=function renombra(nombre) {
this.nombre=nombre;
}
}
MisFunciones = {
pi: 3.14159;
sumar : function(a, b) {
var suma = 0;
while (a <= b) {
suma += a;
a++;
}
return suma;
},
pintarSuma : function(a, b) {
console.log(MisFunciones.sumar(a, b);
}
};
Tema 5.1: Código en el cliente - El lenguaje Javascript 79
MisFunciones.pintarSuma(3,4);
Objetos
Persona.prototype.nuevaFuncion=function() {
// código
}
Persona.prototype.nacionalidad = "española";
• Y los métodos:
• toString(): Devuelve una representación como string del objeto
• valueOf(): Devuelve el valor primitivo (true/false, un número, etc.) del objeto
https://www.w3schools.com/js/js_object_definition.asp
• Sólo hay un tipo de números, que se puede escribir con o sin decimales
• Todos los números se almacenan con 64 bits
• Creación de un objeto Number:
• var num = new Number(valor);
• Propiedades:
• MAX_VALUE: mayor número posible (1.7976931348623157e+308)
• MIN_VALUE: menor número posible (5e-324)
• NEGATIVE_INFINITY: -∞
• POSITIVE_INFINITY : ∞
• NaN: para indicar que el valor no es un número
• Métodos:
• toExponential(x): pone el número en notación científica (1.23e+3)
• toFixed(x): formatea el número con x decimales
• toPrecision(x): formatea el número con longitud x
• Métodos
• round(decimal): redondeo
• random(): devuelve un número aleatorio entre 0 y 1
• max(x, y)
• min(x, y)
Tema 5.1: Código en el cliente - El lenguaje Javascript 85
Métodos sobre strings
• length: número de caracteres de un string: s.length
• Concatenación de strings: operador +
• Al igual que en Java, si el primer operando es un string, los demás operandos se convertirán a strings
para concatenarse
• var cad = "2"+2+2; <--"222"
• toUpperCase(), toLowerCase()
• var m = "Juan";
• var m2= m.toUpperCase(); // m2 = "JUAN"
• charAt(posicion) – equivalente a cad[posicion]
• indexOf(caracter), lastIndexOf(caracter)
• Cuenta desde 0. Si no estuviera el carácter devuelven -1
• var posicion = m.indexOf('a'); // posicion = 2
• substring(inicio, final)
• var resto = m.substring(1); // resto = "uan"
• split(separador)
• var letras = m.split(""); // letras = ["J", "u", "a", "n"]
• m="Hola Juan"; palabras=m.split(" ") // palabras=["Hola","Juan"]
Tema 5.1: Código en el cliente - El lenguaje Javascript 86
Objeto Date
• Proporciona la fecha y hora
• new Date() // fecha y hora actual
• new Date(milisegundos) //milisegundos desde 1 de enero 1970
• new Date(string)
• new Date(anno, mes, dia, horas, minutos, segundos, milisegundos)
• Métodos:
• getTime(): devuelve el número de milisegundos desde 01.01.1970
• getFullYear(): devuelve el año (cuatro dígitos)
• getDate(): devuelve el día del mes (1..31)
• getDay(): devuelve el día de la semana (0..6)
• getHours(): devuelve la hora (0..23)
• getMinutes(): devuelve los minutos (0..59)
• Los equivalentes setDate, setHours, etc.
• toUTCString(): convierte la fecha a un string con formato de fecha de tiempo universal
(Wed, 30 Jan 2013 07:03:25 GMT)
Tema 5.1: Código en el cliente - El lenguaje Javascript 87
Objeto Global
Cambiar atributos
<p>In this case JavaScript changes the value of the src (source) attribute of an image.</p>
https://www.w3schools.com
Tema 5.1: Código en el cliente - El lenguaje Javascript 89
Ejemplos variados
Funciones
<html>
<body>
<p id="demo"></p>
<script>
function myFunction(name,job) {
document.getElementById("demo").innerHTML = "Welcome " + name + ", the " + job + ".";
}
</script>
</body>
</html> Origen: https://www.w3schools.com
Tema 5.1: Código en el cliente - El lenguaje Javascript 90
Licencia de uso
• Licencia Creative Commons
• Este documento tiene establecidas las siguientes
condiciones:
Reconocimiento (Attribution):
En cualquier explotació n de la obra autorizada por la licencia
hará falta reconocer la autoría.
No comercial (Non commercial):
La explotació n de la obra queda limitada a usos no comerciales.
Compartir igual (Share alike):
La explotació n autorizada incluye la creació n de obras derivadas
siempre que mantengan la misma licencia al ser divulgadas.