T8. - Javascript.
T8. - Javascript.
Tema 8
JavaScript
Objetivos
• Comprender los conceptos fundamentales de la programación en JavaScript, incluyendo la
sintaxis básica y la estructura de un programa.
• Dominar el manejo de variables, tipos de datos y operadores en JavaScript para realizar
cálculos y almacenar información de manera eficiente.
• Aprender las estructuras de control en JavaScript, incluyendo condicionales y bucles, para
tomar decisiones y repetir acciones según las necesidades del programa.
• Explorar los eventos en JavaScript y cómo gestionarlos para interactuar con elementos del
DOM, permitiendo la creación de aplicaciones interactivas.
• Comprender la importancia del Document Object Model (DOM) y cómo acceder a
elementos en una página web utilizando JavaScript.
• Aprender a modificar el contenido y los atributos de elementos del DOM, así como crear y
eliminar elementos dinámicamente para manipular la estructura de la página web.
Introducción
Tras haber explorado las bases de HTML y CSS, ahora nos adentraremos en el emocionante mundo
de JavaScript. Este lenguaje de programación, ampliamente utilizado en el desarrollo web, nos
permitirá dar vida a nuestras páginas web al agregar interactividad y dinamismo. A lo largo de esta
sección, aprenderemos cómo JavaScript se integra con HTML y CSS para crear experiencias web más
ricas y atractivas, permitiéndonos controlar el comportamiento de los elementos de la página y
responder a las acciones del usuario.
Índice
¿Qué es JavaScript?
JavaScript, a menudo abreviado como JS, es un lenguaje de programación de alto nivel, interpretado
y orientado a objetos. A diferencia de HTML (HyperText Markup Language) y CSS (Cascading Style
Sheets), que se utilizan principalmente para estructurar y dar estilo a las páginas web, JavaScript se
utiliza para agregar interactividad y comportamientos dinámicos a las páginas web.
Aunque JavaScript comparte su nombre con Java, otro lenguaje de programación, no tienen mucho
en común en términos de sintaxis o funcionalidad. JavaScript fue diseñado específicamente para la
web y se ejecuta en el navegador web del usuario final.
La tripleta HTML+CSS+JS es el núcleo de la programación web moderna. Aquí está la razón por la
cual cada uno de estos componentes es crucial:
1. HTML (HyperText Markup Language): Proporciona la estructura y el contenido de una
página web. Define los elementos y su disposición en la página.
La combinación de estos tres elementos permite crear sitios web modernos y atractivos que van más
allá de la simple presentación de información estática. JavaScript desempeña un papel crucial al
permitirnos crear aplicaciones web interactivas, juegos, formularios dinámicos y muchas otras
características que mejoran la experiencia del usuario.
2. Manipulación del DOM: El Document Object Model (DOM) representa la estructura de una
página web y JavaScript permite a los desarrolladores acceder y manipular dinámicamente el DOM.
Esto significa que se pueden agregar, eliminar o modificar elementos HTML y CSS en respuesta a
eventos o acciones del usuario.
4. Amplio Ecosistema: Existe una vasta colección de bibliotecas y marcos de trabajo (como
jQuery, React, Angular y Vue.js) construidos sobre JavaScript que facilitan el desarrollo web. Estas
herramientas aceleran el proceso de desarrollo y ayudan a crear aplicaciones web avanzadas de
manera eficiente.
Cuando dominamos JavaScript, podemos crear una amplia variedad de aplicaciones y efectos web:
Dado el corto espacio de tiempo que se dispone en este curso, durante la primera parte del tema
estudiaremos conceptos básicos de programación en concreto en javaScript y seguidamente
exploraremos las capacidades de JavaScript en lo que a manipulación del DOM se refiere y
aprenderemos a utilizar este poderoso lenguaje para crear experiencias web ricas e interactivas.
JavaScript admite diversos tipos de datos que se utilizan para representar diferentes tipos de
información. Los tipos de datos más comunes en JavaScript son:
1. Números (Numbers): Representan valores numéricos, ya sean enteros o decimales. Ejemplo:
let edad = 25;
2. Cadenas de Texto (Strings): Almacenan texto. Ejemplo: let nombre = "María";
3. Booleanos (Booleans): Representan valores de verdad (true) o falsedad (false). Ejemplo: let
activado = true;
4. Vectores (Arrays): Almacenan colecciones ordenadas de datos. Ejemplo: let colores =
["rojo", "verde", "azul"];
5. Objetos (Objects): Almacenan colecciones de pares clave-valor. Ejemplo:
let persona = {
nombre: "Juan",
edad: 30,
casado: false
};
• Operadores Aritméticos: Se utilizan para realizar cálculos matemáticos, como suma, resta,
multiplicación, división, módulo, incremento y decremento. Ejemplo:
let suma = 5 + 3;
let resta = 10 - 4;
let multiplicacion = 6 * 7;
let division = 20 / 4;
let modulo = 20 % 4; //Da como resultado 0 que es el resto de dividir 20 entre 4
let division = 20 / 4;
• > (mayor que): Devuelve true si el primer operando es mayor que el segundo, de lo
contrario devuelve false.
• <= (menor o igual que): Devuelve true si el primer operando es menor o igual que el
segundo, de lo contrario devuelve false.
• >= (mayor o igual que): Devuelve true si el primer operando es mayor o igual que el
segundo, de lo contrario devuelve false.
• Los operadores de comparación se pueden utilizar con cualquier tipo de valor, incluidos
números, cadenas, objetos y funciones.
let a = 1;
let b = 2;
let c = "Hola";
let d = "Adiós";
// Igualdad
console.log(a == b); // false
console.log(a === b); // false
console.log(c == d); // false
console.log(c === d); // false
// Desigualdad
console.log(a != b); // true
console.log(a !== b); // true
console.log(c != d); // true
console.log(c !== d); // true
// Menor que
console.log(a < b); // true
console.log(c < d); // false
// Mayor que
console.log(a > b); // false
console.log(c > d); // true
En esta sesión, exploraremos más ejemplos prácticos de cómo utilizar estas variables, tipos de datos
y operadores para realizar cálculos y tomar decisiones en programas JavaScript. Estos conceptos son
la base para construir algoritmos y aplicaciones más complejas en sesiones posteriores del curso.
If anidado: La declaración else if se utiliza para evaluar una condición adicional si la primera
condición if es falsa.
let hora = 15;
if (saldo > 0) {
console.log("Tienes saldo positivo.");
} else {
console.log("No tienes saldo.");
}
Ejemplos Prácticos
Ahora, realizaremos algunos ejercicios prácticos para aplicar lo que hemos aprendido sobre
declaraciones condicionales:
if (numero > 0) {
console.log("El número es positivo.");
} else if (numero < 0) {
console.log("El número es negativo.");
} else {
console.log("El número es igual a cero.");
}
Bucles en JavaScript
Los bucles son fundamentales en la programación, ya que nos permiten realizar tareas repetitivas
de manera eficiente. En JavaScript, utilizamos las siguientes declaraciones de bucles:
for: La declaración for se utiliza para ejecutar un bloque de código un número específico de veces.
Generalmente, se utiliza cuando conocemos la cantidad exacta de iteraciones que deseamos.
for (let i = 0; i < 5; i++) {
console.log("Iteración " + i);
}
while: La declaración while ejecuta un bloque de código mientras una condición sea verdadera. Se
usa cuando no sabemos cuántas veces se ejecutará el bucle de antemano.
let contador = 0;
do...while: La declaración do...while es similar a while, pero garantiza que el bloque de código se
ejecutará al menos una vez antes de verificar la condición.
let intentos = 0;
do {
console.log("Intento #" + intentos);
intentos++;
} while (intentos < 3);
do {
adivinanza = prompt("Adivina el número (entre 1 y 10):");
intentos++;
if (parseInt(adivinanza) === numeroAleatorio) {
console.log("¡Correcto! El número era " + numeroAleatorio);
break;
} else {
console.log("Intento #" + intentos + ": Intenta de nuevo.");
}
} while (intentos < 3);
if (intentos === 3) {
console.log("Agotaste tus intentos. El número era " + numeroAleatorio);
}
Funciones en JavaScript
Una función es un bloque de código que se puede llamar y ejecutar en cualquier parte de un
programa. Las funciones ayudan a organizar y reutilizar el código de manera eficiente. Para definir
una función en JavaScript, puedes utilizar la siguiente sintaxis:
function nombreDeLaFuncion(parametro1, parametro2) {
// Código de la función
return resultado;
}
Ámbito Global: Las variables globales se declaran fuera de cualquier función y son accesibles desde
cualquier parte del programa.
let variableGlobal = "Soy global";
function funcion1() {
console.log(variableGlobal); // Puedo acceder a la variable global
}
Ámbito Local o de Función: Las variables locales se declaran dentro de una función y solo son
accesibles desde esa función.
function funcion2() {
let variableLocal = "Soy local";
console.log(variableLocal); // Puedo acceder a la variable local
Además de declarar funciones con un nombre, también puedes crear funciones anónimas y
expresiones de funciones. Estas se utilizan comúnmente como argumentos de otras funciones o para
definir funciones dentro de objetos.
Función Anónima:
let sumar = function (a, b) {
return a + b;
};
Expresión de Función:
let multiplicar = function multiplica(a, b) {
return a * b;
};
En resumen, las funciones son una parte esencial de JavaScript que te permite modular y reutilizar
tu código de manera efectiva. Comprendiendo el ámbito de las variables y cómo funcionan las
funciones, estarás mejor preparado para escribir programas JavaScript más estructurados y
mantenibles.
Arrays en JavaScript
Un array es una colección ordenada de elementos. Cada elemento en un array tiene un índice
numérico que comienza en 0. Los arrays pueden contener elementos de cualquier tipo, incluyendo
números, cadenas, objetos u otros arrays. Para crear un array en JavaScript, puedes utilizar la
siguiente sintaxis:
Ejemplo de un Array:
let colores = ["rojo", "verde", "azul"];
Objetos en JavaScript
Un objeto es una estructura de datos que almacena pares clave-valor. Cada valor está asociado a
una clave única que actúa como identificador. Los objetos son útiles para representar entidades del
mundo real y sus propiedades. Para crear un objeto en JavaScript, puedes utilizar la siguiente
sintaxis:
let miObjeto = {
clave1: valor1,
clave2: valor2,
clave3: valor3
};
Ejemplo de un objeto.
let persona = {
nombre: "Juan",
edad: 30,
casado: false
};
Para acceder a las propiedades de un objeto, puedes utilizar la notación de punto o la notación de
corchetes:
console.log(persona.nombre); // Resultado: "Juan"
console.log(persona["edad"]); // Resultado: 30
Arrays de Objetos
Los arrays y objetos se pueden combinar para crear estructuras de datos más complejas. Por
ejemplo, puedes tener un array de objetos que representen elementos similares:
let estudiantes = [
{ nombre: "María", edad: 25 },
{ nombre: "Carlos", edad: 22 },
{ nombre: "Ana", edad: 30 }
];
Puedes utilizar bucles como for o forEach para iterar a través de los elementos de un array o las
propiedades de un objeto:
Los arrays y objetos son estructuras de datos cruciales en JavaScript que te permiten almacenar y
organizar información de manera efectiva. Los arrays son ideales para colecciones de elementos
similares, mientras que los objetos son útiles para representar entidades y sus propiedades.
Comprender cómo trabajar con estas estructuras de datos es esencial para el desarrollo web en
JavaScript.
Los eventos son acciones que ocurren en una página web, como hacer clic en un botón, mover el
mouse, escribir en un campo de texto, etc. JavaScript permite la captura y manipulación de estos
eventos para crear aplicaciones web interactivas.
Para agregar un evento a un elemento HTML, primero debes seleccionar ese elemento y luego
asignarle una función que se ejecutará cuando ocurra el evento.
Cancelar eventos
En algunos casos, es posible que desee cancelar un evento antes de que se ejecute su manejador.
Para ello, se puede utilizar la palabra clave preventDefault().
Ejemplo cancelar un evento de clic en un botón:
let button = document.querySelector("button");
button.addEventListener("click", function(event) {
// Cancelar el evento
event.preventDefault();
Evento Descripción
click Se dispara cuando se hace clic en un elemento.
mouseover Ocurre cuando el cursor del mouse entra en un elemento.
mouseout Ocurre cuando el cursor del mouse sale de un elemento.
keydown Se dispara cuando una tecla del teclado se presiona.
keyup Se dispara cuando se suelta una tecla del teclado.
submit Se dispara cuando se envía un formulario.
change Ocurre cuando el valor de un elemento de entrada cambia (como un campo de texto o una
casilla de verificación).
load Se dispara cuando se completa la carga de un recurso, como una imagen o un archivo de
script.
DOMContentLoaded Ocurre cuando el documento HTML se ha cargado completamente y está listo para ser
manipulado mediante JavaScript.
resize Se dispara cuando se cambia el tamaño de la ventana del navegador.
scroll Ocurre cuando el usuario desplaza la página web.
focus Se dispara cuando un elemento obtiene el foco (como un campo de entrada).
blur Se dispara cuando un elemento pierde el foco.
En JavaScript, los errores son notificaciones que se producen cuando se produce un problema
durante la ejecución de un programa.
Los errores pueden ser causados por una variedad de factores, como errores de sintaxis, errores de
lógica o errores de entrada de datos.
La gestión de errores es el proceso de manejar los errores que se producen durante la ejecución de
un programa.
• Errores de sintaxis: Estos errores se producen cuando el código JavaScript no está escrito
correctamente. Por ejemplo, un error de sintaxis se producirá si se olvida una coma después
de una declaración.
• Errores de lógica: Estos errores se producen cuando el código JavaScript está escrito
correctamente, pero no funciona como se esperaba. Por ejemplo, un error de lógica se
producirá si se intenta dividir un número por cero.
• Errores de entrada de datos: Estos errores se producen cuando el usuario introduce datos
incorrectos. Por ejemplo, un error de entrada de datos se producirá si el usuario intenta
introducir un número en un campo de texto que solo acepta texto.
Puedes crear tus propias excepciones personalizadas utilizando el objeto Error y lanzarlas en tu
código cuando sea necesario:
function dividir(a, b) {
if (b === 0) {
throw new Error("No se puede dividir por cero.");
}
return a / b;
}
try {
let resultado = dividir(10, 0);
} catch (error) {
console.log("Error: " + error.message);
}
formulario.addEventListener("submit", function(event) {
try {
// Validación del formulario
if (formulario.nombre.value === "") {
throw new Error("El campo de nombre no puede estar vacío.");
}
// Resto del proceso de envío del formulario
} catch (error) {
event.preventDefault(); // Evitar el envío del formulario
alert("Error: " + error.message);
}
});
En resumen, los eventos y la gestión de errores son aspectos esenciales en el desarrollo web con
JavaScript. Los eventos permiten que tu aplicación responda a las acciones del usuario, mientras que
la gestión de errores te ayuda a identificar y manejar problemas en tu código de manera efectiva,
mejorando la confiabilidad y la usabilidad de tus aplicaciones web.
El DOM organiza la estructura del documento en una jerarquía de nodos. Los nodos representan
partes del documento, como elementos HTML, atributos y texto. Los nodos se organizan en un árbol,
con un nodo raíz llamado "documento". Aquí hay una breve descripción de algunos tipos de nodos
comunes:
1. Elementos: Representan etiquetas HTML, como <div>, <p>, <h1>, etc.
2. Atributos: Son los valores asociados a los atributos de los elementos, como id, class, src, etc.
(attributes)
3. Texto: Representa el contenido de texto dentro de un elemento HTML. (textContent)
4. Documento: Representan el documento completo. (document)
5. Comentario: Representan comentarios dentro de un documento.
Manipulación del DOM en JavaScript
JavaScript te permite acceder y manipular el DOM de una página web. Puedes seleccionar
elementos, cambiar su contenido, modificar atributos y responder a eventos del usuario. Aquí tienes
algunos ejemplos:
Seleccionar Elementos:
JavaScript interactúa con el Modelo de Objetos del Documento (DOM) para manipular y cambiar
dinámicamente las páginas web. Para identificar y seleccionar elementos DOM específicos,
JavaScript proporciona varios métodos.
• getElementById(id): Devuelve el elemento con el ID especificado.
• getElementsByClassName(className): Devuelve un array de elementos que contienen la
clase proporcionada.
• getElementsByTagName(tagName): Devuelve todos los elementos con el nombre de
etiqueta especificado.
• querySelector(selector): Devuelve el primer elemento que coincide con el selector CSS
proporcionado.
• querySelectorAll(selector): Devuelve un NodeList de todos los elementos que coinciden con
el selector CSS proporcionado.
// Seleccionar un elemento por su id→ getElementById
let miElemento = document.getElementById("miId");
Una vez que hemos seleccionado un elemento con JavaScript, podemos cambiar su contenido
utilizando las siguientes propiedades:
• textContent: Cambia el contenido de texto de un elemento.
• innerHTML: Cambia el contenido HTML de un elemento.
let miParrafo = document.getElementById("parrafo");
miParrafo.innerHTML = "Nuevo contenido del párrafo";
Modificar Atributos:
Una vez que hemos seleccionado un elemento con JavaScript, podemos modificar sus atributos
utilizando los siguientes métodos:
• setAttribute(attribute, value): Establece el valor de un atributo.
• getAttribute(attribute): Obtiene el valor de un atributo.
• removeAttribute(attribute): Elimina un atributo.
Este código utiliza el método getElementById para obtener una referencia al elemento con el ID
"imagen" y luego actualiza la propiedad src de ese elemento para cambiar la fuente de la imagen a
"nueva-imagen.jpg".
Los eventos son acciones que pueden ocurrir en una página web, como cuando el usuario hace clic
en un botón, mueve el cursor sobre un elemento o presiona una tecla. JavaScript nos permite
responder a estos eventos para realizar acciones o mostrar información al usuario.
Para responder a un evento, debemos asociar una función a ese evento. Esto se hace utilizando el
método addEventListener().
Podemos establecer los atributos de un elemento recién creado utilizando el método setAttribute().
El método setAttribute() tiene dos parámetros: el nombre del atributo y el valor del atributo.
Por ejemplo, para establecer el atributo id de un elemento div en miDiv, podemos utilizar el siguiente
código:
nuevoDiv.setAttribute("id", "miDiv");
Podemos establecer el contenido de un elemento recién creado utilizando el método textContent.
El método textContent tiene un solo parámetro: el contenido del elemento.
Por ejemplo, para establecer el contenido de un elemento div en "Hola mundo", podemos utilizar el
siguiente código:
nuevoDiv.textContent = "Hola mundo";
Para agregar un elemento recién creado al DOM, podemos utilizar el método appendChild(). El
método appendChild() tiene un solo parámetro: el elemento que queremos agregar al DOM.
Por ejemplo, para agregar el elemento div creado anteriormente al DOM, podemos utilizar el
siguiente código:
document.body.appendChild(nuevoDiv);
Ejemplo completo
let nuevoParrafo = document.createElement("p");
nuevoParrafo.innerHTML = "Este es un nuevo párrafo";
document.body.appendChild(nuevoParrafo);
En JavaScript, podemos eliminar elementos del DOM utilizando el método removeChild(). El método
removeChild() tiene un solo parámetro: el elemento que queremos eliminar.
let elementoAEliminar = document.getElementById("elemento");
elementoAEliminar.parentNode.removeChild(elementoAEliminar);
Por ejemplo, para eliminar un elemento div del cuerpo de la página web, podemos utilizar el
siguiente código:
let miDiv = document.getElementById("miDiv");
document.body.removeChild(miDiv);
Beneficios del DOM
• Interactividad: Permite crear aplicaciones web interactivas que respondan a las acciones del
usuario.
• Accesibilidad: Facilita la manipulación y actualización de contenido web en tiempo real.
• Dinamismo: Permite modificar la apariencia y el contenido de una página sin necesidad de
recargarla.
• Flexibilidad: El DOM permite acceder y manipular cualquier elemento de una página web,
independientemente de su ubicación o estructura.
• Eficiencia: El DOM es una interfaz eficiente que permite realizar cambios en una página web
de forma rápida y sencilla.
• Potencial: El DOM es una herramienta poderosa que puede utilizarse para crear aplicaciones
web dinámicas e interactivas.
DOM es una parte esencial del desarrollo web en JavaScript. Proporciona una interfaz para acceder
y modificar elementos HTML, lo que permite crear experiencias interactivas y dinámicas en
aplicaciones web. Comprender cómo funciona el DOM es fundamental para cualquier desarrollador
web front-end.
<script src="script1.js"></script>
</body>
</html>
scrip1.js
// Seleccionar el párrafo y el botón
let miParrafo = document.getElementById("miParrafo");
let miBoton = document.getElementById("miBoton");
Cuando hagas clic en el botón, el texto del párrafo se cambiará a "¡Texto cambiado!".
Ejercicio 2: Crear Elementos Dinámicamente
En este ejercicio, crearás un nuevo elemento de lista (li) y lo agregarás a una lista (ul) cuando se haga
clic en un botón.
HTML:
<!DOCTYPE html>
<html>
<head>
<title>Ejercicio 2</title>
</head>
<body>
<ul id="miLista">
<li>Elemento 1</li>
<li>Elemento 2</li>
</ul>
<button id="miBoton">Agregar Elemento</button>
<script src="script2.js"></script>
</body>
</html>
script2.js
// Seleccionar la lista y el botón
let miLista = document.getElementById("miLista");
let miBoton = document.getElementById("miBoton");
HTML:
<!DOCTYPE html>
<html>
<head>
<title>Ejercicio 3</title>
</head>
<body>
<button id="miBoton">Cambiar Color</button>
<script src="script3.js"></script>
</body>
</html>
script3.js
// Seleccionar el botón
let miBoton = document.getElementById("miBoton");
Puedes utilizar JavaScript para cambiar el texto del encabezado cuando se carga la página:
// Seleccionar el encabezado h1 por su id
let miTitulo = document.getElementById("miTitulo");
Puedes utilizar JavaScript para cambiar el contenido del párrafo de la siguiente manera:
// Seleccionar un párrafo por su id
let miParrafo = document.getElementById("miParrafo");
Puedes utilizar JavaScript para cambiar el enlace (src) de la imagen cuando se hace clic en un botón:
// Seleccionar la imagen por su id
let miImagen = document.getElementById("miImagen");
En este ejemplo, cuando hagas clic en el botón, el enlace de la imagen se cambiará a "imagen2.jpg"
y el atributo "alt" se cambiará a "Nueva Imagen". Esto puede ser útil para cambiar dinámicamente
el contenido de una imagen en respuesta a eventos del usuario, como un botón de "Cambiar
Imagen".
Supongamos que tienes un botón en tu página HTML y deseas mostrar un mensaje cuando el usuario
haga clic en él.
HTML:
JavaScript
// Seleccionar el botón por su id
let miBoton = document.getElementById("miBoton");
Cuando el usuario haga clic en el botón, aparecerá un cuadro de alerta con el mensaje "Hiciste clic
en el botón".
Ejemplo 2: Evento Mouseover en una Imagen
Supongamos que tienes una imagen y deseas cambiar su tamaño cuando el usuario coloca el mouse
sobre ella.
HTML:
JavaScript:
// Seleccionar la imagen por su id
let miImagen = document.getElementById("miImagen");
Cuando el usuario coloque el mouse sobre la imagen, esta se ampliará al doble de su tamaño original.
Supongamos que tienes un campo de texto y deseas mostrar un mensaje cuando el usuario presione
una tecla en el campo.
HTML:
<input id="miInput" type="text" placeholder="Escribe algo">
JavaScript:
// Seleccionar el campo de texto por su id
let miInput = document.getElementById("miInput");
Cuando el usuario escriba algo en el campo de texto y presione una tecla, aparecerá un cuadro de
alerta que mostrará la tecla presionada.