JavaScript 24 25
JavaScript 24 25
• Client-side: navegador
Frontend Backend
Javascript en el navegador
(frontend)
Permitirá:
• Crear cookies
• Validar formularios
• Crear animaciones
<script type=“text/javascript”>
…
</script>
<script src="ruta/ficheroScripts.js"></script>
Ejemplo. Javascript en linea
<!DOCTYPE html>
<html>
<body>
<h1>Mi primer programa en JavaScript</h1>
<button type="button" onclick="document.getElementById('demo').innerHTML = Date()">
Haz clic sobre mí para ver la fecha y hora</button>
<p id="demo"></p>
</body>
</html>
Ejemplo. Javascript en script (sin funciones)
Se pone al final del documento para que haya cargado toda la página web y al ejecutarse
conozca todos los elementos.
<!DOCTYPE html>
<html>
<head>
<title>pagina principal</title>
<meta charset="UTF-8">
</head>
<body>
<table>
<tr>
<td>NOMBRE </td>
<td id="nombre"></td>
</tr>
<tr>
<td>EDAD </td>
<td id="edad"></td>
</tr>
</table>
<script type="text/javascript">
var nombre, edad;
nombre = prompt('teclea tu nombre: ');
edad = prompt('teclea tu edad: ');
document.getElementById('nombre').innerHTML=nombre;
document.getElementById('edad').innerHTML=edad;
</script>
</body>
</html>
Ejemplo. Javascript en script (con función)
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript puede cambiar imágenes</h1>
<img id="miBombilla" onclick="cambiaImagen()" src="apagada.gif" width="100" height="180">
<p>Haz clic sobre la bombilla para encenderla o apagarla.</p>
<script>
function cambiaImagen() {
var image = document.getElementById('miBombilla');
if (image.src.match("encendida")) {
image.src = "apagada.gif";
} else {
image.src = "encendida.gif";
}
}
</script>
</body>
</html>
//números
3922
-9.7462
//boolean (lógicos)
true
false
//objetos
{
"nombre": 'Pepe',
"poblacion": "Madrid",
"edad": 18,
"estudiante": true
}
Variables
Las variables son zonas de memoria a las que se les pone un
nombre y que se utilizan para almacenar datos.
• Ámbito global:
Las variables declaradas fuera de cualquier función o bloque tienen un ámbito global.
Están disponibles en cualquier lugar del código.
• Ámbito de función:
Las variables declaradas dentro de una función solo están disponibles dentro de esa
función.
• Ámbito de bloque:
Las variables declaradas dentro de un bloque ({}) solo son accesibles dentro de ese
bloque.
Las variables declaradas con let tienen un ámbito de bloque, lo que significa que
solo están disponibles dentro del bloque donde fueron declaradas
Las variables declaradas con var tienen un ámbito de función o global, lo que
significa que están disponibles dentro de toda la función donde se declaran, incluso
antes de que se ejecuten
Vbles (o constantes) globales
locales de una función
de bloque (let)
Ámbito global
Ámbito
de
bloque
Ámbito
de
función
Funciones para trabajar con vbles
Operadores aritméticos
Operación Significado
+ Suma (números), concatenación (texto)
- Resta
* Multiplicación
/ División
% Módulo (resto de una división entera)
++ Incremento en 1
-- Decremento en 1
Pruébalos en la consola
Operadores de asignación
Operación Significado
= Asignación
+= Asignación del resultado de la suma
-= Asignación del resultado de la resta
*= Asignación del resultado de la multiplicación
/= Asignación del resultado de la división
%= Asignación del resultado del módulo
Funciones
Una función es un conjunto de instrucciones que se
agrupan con un nombre para realizar una tarea concreta
y que se pueden reutilizar fácilmente, simplemente
poniendo el nombre.
numero1 = 5; numero2 = 8;
suma();
Valores de variables que se mandan a las funciones
Parámetros o argumentos
//Definición de la función
function sumaYMuestra(primerNumero, segundoNumero) {
var resultado = primerNumero + segundoNumero;
alert("El resultado es " + resultado);
}
// Llamada a la función
sumaYMuestra(numero1, numero2);
Ejemplo. Suma de dos números introducidos en controles
de formulario, y pasados a la función para ser sumados
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
function suma(n1,n2) {
var resultado;
resultado = n1 + n2;
document.body.insertAdjacentHTML("beforeEnd","<br>"+n1+ " +
"+ n2+ " = " + resultado);
}
</script>
</head>
<body>
<form name="miFormulario" action="" method="get">
<input type="number" name="numero1" />
<input type="number" name="numero2" />
<input type="button" value="Sumar"
onClick="suma(numero1.value,numero2.value);" >
</form>
</body>
</html>
<script type="text/javascript">
function suma(numero1,numero2) {
var resultado = parseInt(numero1) + parseInt(numero2);
document.getElementById("resultado").innerHTML="Resultado= "+resultado;
}
</script>
<body>
<form name="miForm">
Numero 1 = <input type="text" id="n1" name="n1"></br>
Numero 2 = <input type="text" id="n2" name="n2"></br>
</form>
<div onclick="suma(document.getElementById('n1').value , document.getElementById('n2').value)">
Cliquea aquí para calcular el resultado
</div>
<div id="resultado">Resultado: </div>
</body>
Ejercicios
1. Crea una función que reciba el nombre de una persona como
parámetro y muestre un saludo en la página web.
3. Crea una función que reciba la edad de una persona como parámetro
y muestre un mensaje indicando si es mayor o menor de edad.
nombre= document.getElementById("nombre").value;
//restamos las fechas, dándonos los milisg de diferencia, que hay que pasar a años
edad=Math.trunc((hoy-fNacimiento)/(1000*60*60*24*365));
solución
Ejercicios
1. Realiza una función que solicite un texto, y sustituya otro
texto que aparece en la página web en una determinada
ubicación por el texto solicitado.
solución
var numero=pideNumero();
document.write("<h1> ¿? </h1> <br/>");
document.write(numero + " * " + 1 + " = " + numero*1 + "<br/>");
document.write(numero + " * " + 2 + " = " + numero*2 + "<br/>");
document.write(numero + " * " + 3 + " = " + numero*3 + "<br/>");
document.write(numero + " * " + 4 + " = " + numero*4 + "<br/>");
document.write(numero + " * " + 5 + " = " + numero*5 + "<br/>");
document.write(numero + " * " + 6 + " = " + numero*6 + "<br/>");
document.write(numero + " * " + 7 + " = " + numero*7 + "<br/>");
document.write(numero + " * " + 8 + " = " + numero*8 + "<br/>");
document.write(numero + " * " + 9 + " = " + numero*9 + "<br/>");
document.write(numero + " * " + 10 + " = " + numero*10 + "<br/>");
</script>
</head>
<body>
</body>
</html>
Mayor que (a > b)
Mayor o igual que (a >= b)
Menor que (a < b)
Menor o igual que (a <= b)
Igual que (a == b)
Condiciones
En pseudocódigo sería:
Si (condición) entonces
acción a realizar
En JavaScript sería:
If condicional
if (condición) {
acción1;
acción2;
}
acción3;
…
Permite realizar ciertas acciones si se cumple una condición, y
otras determinadas acciones si la condición resulta falsa.
En pseudocódigo sería:
Si (condición) entonces
acciones a realizar
If-else condicional
si no
acciones a realizar
En JavaScript sería:
if (condición) {
acción1;
acción2;
} else {
acción3;
acción4;
}
acción5;
Ejemplo2 if-else
Permite tomar decisiones en función de una condición.
Switch condicional múltiple En pseudocódigo sería:
Según (expresión)hacer
si valor1:
acción a realizar
si valor2:
acción
…
en otro caso:
acción
Fin_según
En JavaScript sería:
switch(expresion) {
case x:
…
break;
case y:
…
break;
default:
…
}
Bucles
1. Escribe un script que utilice un bucle for que pida
un número y muestre en la página web su tabla de
multiplicar
2. Igual, pero con un bucle while
3. Igual, pero con un bucle do_while
4. Realiza un script que muestre todas las tablas de
multiplicar del 1 al 9 en una misma tabla
5. Crea un script que dado un número en decimal lo
Ejercicios
pase a binario
6. Crea un script que permita calcular una potencia de
un número basándose en multiplicaciones
Ejemplo círculo
<canvas id="tutorial" width="500" height="500" style="border
: 1px solid grey;">
Tu navegador no soporta canvas. Actualizalo
</canvas>
<script type="text/javascript">
var c=document.getElementById("tutorial");
var dibujo=c.getContext("2d");
dibujo.fillStyle ="blue";
dibujo.beginPath();
dibujo.arc(200,100,50,0,Math.PI*2,true);
dibujo.closePath();
dibujo.fill();
</script>
Investiga qué son cada uno de los parámetros del método arc
Cambiar estilos dinámicamente
con JavaScript
#c749df
#abd2c8
Acceder a elementos:
• document.getElementById('id'): Selecciona un elemento por su ID.
• document.querySelector('.clase'): Selecciona el primer elemento
que coincida con un selector CSS.
• document.getElementsByTagName('tag'): Selecciona todos los
elementos de un tipo dado.
Este script te imprimirá en la consola una representación jerárquica del árbol DOM,
mostrando la relación entre nodos.
Métodos para crear nuevos elementos en
una página web
HTML del ejemplo
<form name="miFormulario">
<label for="mensaje">Escribe el mensaje:</label>
<input type="text" id="mensaje" name="mensaje"><br><br>
<label for="veces">Indica la cantidad de veces que quieres mos
trar el mensaje:</label>
<input type="number" id="veces" name="veces">
</form>
<p onclick="">Haz clic para probarme</p>
<table id="tabla">
</table>
Método 1 para crear nuevos
elementos en una página web
var tabla="<table>";
for (i=0; i<veces; i++ ){
tabla+="<tr><td>"+ mensaje + "</td></tr>";
}
tabla+="</table>";
document.getElementById('tabla').innerHTML=tabla;
2. Lo agregamos al id tabla
Método 2 para crear nuevos
elementos en una página web
var tabla, fila, celda;
tabla = document.createElement('table');
for (i=0; i<veces; i++ ){
console.log(i);
fila = tabla.insertRow(i);
celda = fila.insertCell(0);
celda.innerHTML = mensaje;
}
document.getElementById("addTable").appendChild(tabla);
1. Creamos varias vbles (para tabla, para cada fila, para cada celda
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="pulsa">Púlsame</div>
</body>
</html>
Con el método addEventListener()
Miramos la documentación de este método:
https://www.w3schools.com/jsref/met_document_addeventlistener.asp
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="pulsa">Púlsame</div>
<script>
document.getElementById('pulsa').addEventListener('click', funcion1);
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-
scale=1.0">
<title>Document</title>
</head>
<body>
<div id="pulsa">Púlsame</div>
<script>
document.getElementById('pulsa').onclick = function (){
alert("clic");
}
</script>
</body>
</html>
¿Recuerdas este ejercicio?
adáptalo utilizando
el método visto
addEventListener
#c749df
#abd2c8
versión1 versión2
Eventos a utilizar:
•onmouseover #93d62c
•onmouseout (volverlo a poner
blanco)
Versión optimizada e independiente del número de celdas
Validación de formularios
if (!document.miFormulario.nombreCampo[0].checked &&
!document.miFormulario.nombreCampo[1].checked &&
!document.miFormulario.nombreCampo[2].checked &&
!document.miFormulario.nombreCampo[3].checked){
//no se ha elegido ninguna opción
}
Forma 2
const seleccion = document.querySelector("input[name=‘nombreCampo']:checked");
if (!seleccion) {
//no se ha elegido ninguna opción
}
selecciona el radio que esté checked, tomará el valor null si
no hay ninguno
Respuesta 1<input type="checkbox" name="nombreCampo" value="1">
Respuesta 2<input type="checkbox" name="nombreCampo" value="2">
Respuesta 3<input type="checkbox" name="nombreCampo" value="3">
Respuesta 4<input type="checkbox" name="nombreCampo" value="4">
document.nombreFormulario.nombreCampo[numOpción].checked
Validar checkbox
Forma 1
if (!document.miFormulario.nombreCampo[0].checked &&
!document.miFormulario.nombreCampo[1].checked &&
!document.miFormulario.nombreCampo[2].checked &&
!document.miFormulario.nombreCampo[3].checked){
//no se ha elegido ninguna opción
}
Forma 2
const valores = document.querySelectorAll('input[name="nombreCampo"]:checked');
if (valores.length === 0) {
//no se ha elegido ninguna opción
}
<select name="nombreControl" id="idControl">
<option value="valor0">- Selecciona un valor -</option>
<option value="valor1">Primer valor</option>
<option value="valor2">Segundo valor</option>
<option value="valor3">Tercer valor</option>
</select>
Validar select
document.nombreFormulario.nombreControl.selectedIndex
Devuelve el número del elemento seleccionado
(empieza en 0)
document.nombreFormulario.nombreControl[indice].selected
Devuelve true si el elemento indicado está seleccionado
Forma 1
if (document.miFormulario.nombreControl.selectedIndex==0){
//está elegida la opción inicial (no válida)
}
Forma 2
if (document.getElementById("idControl").value=="valor0”){
//está elegida la opción inicial (no válida)
}
Realiza su validación siguiendo las
formas 1 y 2 en dos prácticas
distintas
Investiga en w3schools ….
Pantalla 3
ARRAYS en JavaScript
Es una variable que puede almacenar más de un
valor a la vez.
Los valores pueden ser de distintos tipos
Creación de arrays
var lista = [ ] → array vacío
var lista = [
elemento1,
elemento2,
…
]
Acceder a los elementos del array
• Se utiliza un índice (empieza por 0)
lista[1] → elemento2
lista
lista[0]=nuevoValor
Propiedades y métodos de los arrays
• Devuelve la cantidad de elementos del array → lista.length
lista.forEach(nombreFuncion);
function nombreFuncion(value){
//value es el valor de cada elemento del array
//esta función es llamada tantas veces como elementos tenga el array
}
• Añadir elementos al array → lista.push(nuevoElemento)
• Quitar el último elemento del array (lo devuelve)→ valor = lista.pop()
• Quitar el primer elemento del array y reindexar los que quedan →
valor = lista.shift()
• …
https://www.w3schools.com/js/js_array_methods.asp
Rellenar un select con un array
con javascript
Ejercicio
Rellena el select de la página web con los nombres de los meses de un
array
Modifica este ejercicio cargando los select con javascript
Pantalla 1 Pantalla 2
Pantalla 3