Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Introducción a JavaScript
Introducción
En esta lectura, vamos a explorar uno de los lenguajes más utilizados dentro de la programación
web.
En conjunto con HTML y CSS veremos que podremos realizar sistemas webs complejos, con
cambios dinámicos de acuerdo con la interacción del usuario (cliente que utiliza el navegador) con
nuestro sistema.
Así mismo, incursionaremos en conceptos fundamentales de este lenguaje tan solicitado a la hora
de emprender una búsqueda laboral o realizar nuestros propios sistemas.
Conocer en conjunto tanto HTML, como CSS, JavaScript y PHP hará que nuestros sistemas sean
dinámicos, adaptativos y con mejoras en la experiencia de usuarios (como los clientes se
relacionan con nuestro sistema).
Video de Inmersión
Unidad 1. Principales nociones de JavaScript
Tema 1. JavaScript, ¿qué es y cuál es su utilidad?
JavaScript es un lenguaje interpretado (no necesita compilarse para su ejecución). Está orientado
a objetos y débilmente tipado, esto quiere decir que las variables que definamos en nuestros
scripts pueden cambiar su tipo de dato en el transcurso de este.
Este lenguaje se ejecuta en el navegador web (no en el servidor) y, entre sus utilidades, podemos
indicar el manejo de eventos (como clics en un botón o el envío de un formulario), la manipulación
de elementos HTML (cambiar el contenido de un div u otras etiquetas o el valor de un input) y el
acceso a valores de los elementos de un formulario o contenido dentro de una etiqueta.
También, es utilizado para crear efectos visuales en nuestro desarrollo, por ejemplo, movimiento
en las imágenes, cambio de color en los elementos, habilitar o deshabilitar el clic de botones,
generar o cambiar enlaces a otras páginas de forma dinámica.
Este lenguaje nos permitirá también crear nuestras propias funciones para, por ejemplo, validar
las entradas (datos) de los usuarios en un formulario, una utilidad muy necesaria, ya que las
validaciones de datos siempre debemos realizarlas tanto del lado del cliente (navegador utilizando
JavaScript) como en el servidor web utilizando PHP.
Todos los navegadores web actuales implementan este lenguaje, por lo cual, es el único lenguaje
de programación que entienden de forma nativa (esto es, sin la necesidad de agregar
complementos o herramientas adicionales).
Para interactuar con una página web, se provee al lenguaje JavaScript de una implementación
llamada Document Object Model (DOM). Document hace referencia a todo el contexto de la
página, esto es, todo lo que el navegador graficará en pantalla y estará a disposición de los
usuarios (en eventos y otras acciones).
De la misma forma que con CSS, podemos tener archivos externos a nuestra página con el
código JavaScript (estos archivos por convención deben tener como extensión .js):
Figura 1. Código
O bien, pueden estar incluidos dentro de la misma página entre las etiquetas <script></script>
Figura 2. Código
Fuente: elaboración propia.
Actividad de repaso
Si suponemos que dentro de nuestra página web tenemos una etiqueta <h2> de la siguiente
forma: <h2>Hola Mundo</h2>, podemos cambiar “Hola Mundo” por “Bienvenidos”.
Veradero
Falso
Justificación
Figura 3. Código
También, vemos una propiedad class, el nombre de la clase que representa el elemento y que
utilizaremos mayormente para aplicarles estilos CSS, pueden existir muchos elementos con el
mismo valor de esta propiedad, ya que serán elementos a los que les queremos aplicar estilos
iguales.
Por último, notemos la propiedad name, el nombre del elemento y el valor que se enviará al
servidor cuando enviemos nuestro formulario. Pueden existir muchos elementos con el mismo
valor de name, puesto que, por ejemplo, podemos tener más de un formulario dentro de nuestra
página y, en ellos, solicitamos el nombre del usuario.
Selector por ID
Unos de los selectores más importantes y utilizados es el de ID, puesto que este selector nos
devolverá un único elemento (recordemos que no puede existir más de un elemento con el mismo
valor de la propiedad).
Figura 4. Código
Figura 5. Código
Figura 6. Código
La diferencia radica en que, de esta forma, no obtendremos el elemento de modo directo, sino
que obtendremos un array, aunque encontramos uno solo, con todos los que tengan como
atributo name el valor nombre (recordemos que pueden existir muchos con el mismo valor).
Entonces, para manipularlo, debemos indicar el índice del array que pertenece al elemento
buscado, comenzando por el índice 0.
Figura 7. Código
Figura 8. Código
Y, para manipularlo:
Figura 9. Código
Veamos un ejemplo para clarificar mejor el concepto de seleccionar por índice del array. En el
ejemplo planteado, tenemos dos tags <buttons>, ahora bien, al botón_cancelar queremos
cambiar su contenido a “Cancel” y al enviar por “Send”
Notemos, también, que en los ejemplos que trabajamos con el <input type=”text”> utilizamos
el value para manipular su valor y con los botones indicamos innerHTML.
InnerHTML nos sirve para manipular el contenido que se encuentra entre las etiquetas de
apertura y de cierre.
Actividad de repaso
En nuestro documento, tenemos un elemento <div> de la siguiente forma:
<div class=”container” id=”div_contenido”>HOLA MUNDO</div>
Si quisiéramos cambiar el contenido “Hola mundo” por “Bienvenidos”, ¿qué opción sería la
correcta?
document.getElementById(“div_contenido”).innerHTML = “Bienvenidos”
document.getElementById(“div_contenido”)[0].innerHTML = “Bienvenidos”
document.getElementById(“div_contenido”).value = “Bienvenidos”
document.getElementByClassName(“div_contenido”).innerHTML = “Bienvenidos”
Justificación
Al cargar una página en nuestro navegador, tenemos dos situaciones claves. Recordemos que el
proceso de una carga en el navegador comienza con una petición de este al servidor, el cual
responde enviando el código HTML correspondiente.
Primeramente, tenemos el evento ready (la página está lista para ser utilizada por el usuario).
Este evento podemos capturarlo si al final de nuestro código HTML (inmediatamente antes del
cierre de la etiqueta body - </body>) agregamos el siguiente código:
Una vez que la página se encuentra lista para ser utilizada por el usuario, veremos una salida en
pantalla con el mensaje correspondiente.
Evento load
Una vez que la página está lista para ser utilizada por el usuario, ocurre un siguiente evento.
Esto se da cuando la página se cargó completamente. La diferencia radica, principalmente, en el
tiempo de carga.
Este se refiere a la carga completa del cuerpo de la página, esto es, de la etiqueta <body>.
Para manipular este evento, podemos agregar este código en nuestra web:
La propiedad location
document.location nos permitirá acceder y manipular las diferentes propiedades de la URL que
estamos navegando.
Por ejemplo, supongamos que tenemos un proyecto llamado IPP dentro de nuestro host local y
cargamos la página. En este proyecto, necesitamos conocer la URL, por lo que podríamos
realizar la siguiente acción:
Al finalizar la carga de nuestro sitio, el navegador nos redirigirá a la web del famoso buscador.
Otras funcionalidades de document.location:
Actividad de repaso
Si en nuestro documento HTML tenemos dos llamados de ejecución, ready y load, ¿cuál se
ejecutará primero?
Ready
Load
Ambos al mismo tiempo
Justificación
Las variables son representadas bajo un nombre simbólico que almacena un valor asociado en la
memoria del ordenador (en el caso de JavaScript, este espacio lo administra el navegador web).
En JavaScript, podemos, por ejemplo, almacenar valores del tipo cadena de caracteres, números
enteros, de punto flotante (o decimal), entre otros.
Para definir una variable en JavaScript, podemos utilizar tanto la sentencia var o let, aunque con
los fines prácticos del curso nos abocaremos al uso de var.
Primeramente, declaramos con var la variable llamada miVariable y le asignamos el valor “Hola
Mundo”, luego mostramos una ventana de alerta mostrando dicho valor.
Las variables pueden sobrescribirse o concatenarse con otras. Para la concatenación, utilizamos
el símbolo de suma (+). Para sobrescribir su valor, no es necesario utilizar var.
Primero se mostrará la alerta con la leyenda “Hola Mundo” y, luego, otra alerta con el valor 1492.
Ejemplo:
var miVariable = []
var miVariable = new Array()
Cabe aclarar que no existe diferencia en cuanto a la definición de una forma u otra.
Para agregar elementos a un array, nos valdremos de la función (construcción propia del
lenguaje) push.
Hemos definido un array llamado miVariable, posteriormente, hemos agregado tres elementos
(utilizando push) del tipo cadena de caracteres.
Puesto que el elemento con índice cero es el primero que declaramos (“Hola Mundo”), el
elemento con índice 1 es el segundo declarado (“Bienvenidos al”) y es por ello por lo que lo
invocamos como miVariable[1].
También, es factible concatenar todos los elementos juntos utilizando la función join, a la cual
podemos pasarles o no parámetros (de no pasarles la concatenación se hará separando cada
elemento con una coma (,)).
A su vez, a join podemos enviar la cadena de caracteres que queramos utilizar como separador
de elementos, por ejemplo, miVariable.join(" - ") donde los separamos con espacio, guion medio y
un nuevo espacio.
A sabiendas que una ventana alert no muestra código HTML, podemos realizar el siguiente
código para mostrar cada elemento en una línea diferente ( \n representa un salto de línea en
una ventana de alerta).
Un arreglo en JavaScript (por ser un lenguaje débilmente tipado), admite que sus elementos sean
de diferentes tipos de datos, por lo cual, el siguiente código es totalmente válido:
Para conocer la cantidad de elementos que posee un array en JavaScript, podemos recurrir a su
propiedad length.
Podemos agregar:
Las constantes presentan dos diferencias importantes en comparación con las variables.
Funciones
Una función es una sección de código que sirve para realizar una actividad específica, así, por
ejemplo podemos tener funciones para realizar operaciones matemáticas, validar datos de un
formulario, tomar decisiones de cómo continuar la ejecución de la página, entre muchas otras,
dependiendo de la necesidad del sistema que estemos construyendo.
Una de las formas de declarar funciones en JavaScript es comenzar con la instrucción function
seguida del nombre de dicha función (un nombre que represente que debe realizarse la función
como, por ejemplo, sumar o restar). Luego, entre paréntesis, se debe agregar, de ser necesario,
los parámetros con los que esta trabajará.
En este sencillo ejemplo, hemos declarado la función sumar y le enviamos dos parámetros (a y
b). El retorno de dicha función es la suma (o concatenación) de ambos parámetros.
Para invocar una función, solo debemos escribir el nombre de esta y entre paréntesis enviar los
parámetros solicitados.
En este ejemplo, declaramos la función sumar y, posteriormente, asignamos una variable llamada
respuesta con el resultado de esta pasando los parámetros de los números que queremos sumar
(24 y 58) y lo mostramos en una alerta.
Actividad de repaso
¿Cuál será el resultado del siguiente código?
<script>
const a = 58;
var b = "11";
alert(a + b);
</script>
5811
69
Justificación
Conclusión
JavaScript, con su potencialidad para trabajar en el navegador y su posibilidad de dejarnos crear
nuestras propias funciones e interactuar con los elementos del DOM, se convierte en una
herramienta muy valiosa en nuestros proyectos, ya que podemos relacionar el navegador con las
acciones del usuario.
Esta biblioteca es de código abierto y libre, por lo que se permite su utilización en proyectos libres
o privados.
Ofrece una serie de funcionalidades basadas en JavaScript que, de otra manera, requerirían de
mucho más código, es decir, con las funciones propias de esta biblioteca se logran grandes
resultados en menos tiempo.
Para poder utilizar jQuery en nuestros proyectos, tenemos dos opciones. La primera es incluir la
librería directamente desde la web, como si estuviese en nuestro propio proyecto. Esto se logra al
añadir una simple línea:
<script src="https://code.jquery.com/jquery-3.6.0.min.js"
integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4="
crossorigin="Anonymous"></script>
Otra forma es descargar el código desde https://code.jquery.com/jquery-3.6.0.min.js y agregarlo a
nuestra carpeta de proyecto (de esta forma, lo tendremos local, útil si se quiere trabajar sin
conexión a internet durante el desarrollo en nuestro host local).
Una vez agregado el archivo, solo resta incluirlo:
<script src="assets/js/jquery-3.6.0.min.js"></script>
Las utilidades de jQuery siempre comenzarán con el signo pesos ($).
Tema 1. Selectores en jQuery
Al igual que con JavaScript nativo, jQuery permite seleccionar elementos del DOM de diferentes
maneras.
Los selectores en jQuery siguen la misma estructura que los selectores en CSS (cuando los
utilizamos para dar estilos a nuestras páginas).
Aquí, hemos seleccionado todos los elementos cuya propiedad class es input-selector-nombre.
Al igual que el selector por nombre, podemos obtener muchos elementos, que son retornados
como un array que comienza con el índice 0.
En jQuery, también es válido seleccionar elementos que no tengan una clase determinada,
veamos el siguiente ejemplo:
Con el siguiente código, obtendremos todos los input que no posean la clase input-selector-
nombre.
Para seleccionar elementos por tag, solo basta informar el nombre de este. Por ejemplo, si
queremos encontrar todos los botones de nuestra página, utilizaremos la siguiente sintaxis:
También, obtendremos una array si tenemos más de un botón en nuestra página web.
Veamos un ejemplo un poco más avanzado, donde hemos agregado etiquetas radio.
Muchas veces, queremos conocer cuál de las opciones ha seleccionado el usuario, para ello,
podemos agregar al selector un indicador especial :checked.
Si el usuario seleccionó una opción, entonces, estaremos obteniendo este único elemento, caso
contrario, nos retornará un elemento vacío.
Al hacer esto, estaremos obteniendo todos los checkbox cuya propiedad name es interés y que el
usuario seleccionó.
Actividad de repaso
En nuestro documento, tenemos un elemento <div> de la siguiente forma:
$(“.container”)[1]
$(“.container”)[2]
$(“#div_contenido_inferior”)[0]
Justificación
Supongamos que queremos ver el contenido que el usuario ha ingresado en el input nombre,
podemos hacerlo con el siguiente código:
También, podemos manipular el contenido HTML de los tags (de forma análoga a la función de
JavaScript innerHTML, utilizaremos html()).
Es decir, mostramos el contenido que se encuentra entre las etiquetas de apertura y cierre
<button></button>
Donde cambiamos el texto Enviar por Send, haciendo que el navegador presente el siguiente
formulario:
Vale realizar una aclaración importante que diferencia a jQuery de JavaScript nativo.
En el siguiente ejemplo, tenemos dos div con su nombre de clase container:
Al seleccionar por clase, obtendremos los dos elementos div. Cuando cambiemos el contenido
HTML de la selección, jQuery lo hará para ambos al mismo tiempo.
Para evitar esto y manipular uno de ellos, jQuery nos facilita algunas funcionalidades extras.
Actividad de repaso
¿Es correcto afirmar que $(".container").eq(0) tiene el mismo efecto que utilizar
$(".container").first() en todos los casos de selección de elementos por nombre de clase?
Verdadero
Falso
Justificación
ready()
Ofrece también una mejora a la funcionalidad ready del documento HTML (cuando este está
disponible para ser utilizado por los usuarios durante el proceso de carga).
Esta función podemos ejemplificarla con el siguiente código:
En este ejemplo, creamos una función simple (solo contiene una alerta) que se ejecutará en el
ready de nuestra página web.
La salida en pantalla será la siguiente.
Este evento, como veremos un poco más adelante, cumple una función fundamental, ya que
podemos comenzar a manipular los elementos, asignar otros eventos a ellos y comenzar la
interacción con los usuarios a sabiendas de que todos los elementos en el DOM ya se encuentran
disponibles.
click()
Como su nombre lo indica, invoca una acción al realizar clic sobre los elementos asignados.
Este evento se puede asignar a cualquier elemento del DOM.
Hemos asociado el botón con ID botón_cancelar a un evento clic. Cuando el usuario pulse (haga
clic en este) verá una alerta con la leyenda: se canceló el envío del formulario.
focus()
Este evento se ejecuta cuando un elemento tiene el foco (el usuario lo ha seleccionado).
Por ejemplo, si tenemos un input de texto y el usuario lo selecciona para completar los datos, en
este momento, se invocará dicho evento.
Este evento se puede asignar a cualquier elemento del DOM.
Ejemplo:
focusout()
Es el evento contrario a focus(), ya que se ejecutará cuando el elemento pierde el foco (el usuario
ha seleccionado otro elemento).
Este evento se puede asignar a cualquier elemento del DOM.
Ejemplo:
Figura 73. Código
submit()
El evento submit es, seguramente, uno de los más importantes en la manipulación de formularios,
puesto que con él podemos impedir que este se envíe al servidor.
Antes de avanzar con el ejemplo, vamos a presentar una nueva funcionalidad de jQuery. La
función trim().
Esta función quita los espacios en blanco delante y detrás de los datos ingresados por el usuario,
ya que pueden causar un error cuando indicamos la propiedad que requiere en los elementos:
Si bien el navegador verifica que el input tenga contenido, el usuario podría agregar espacios en
blanco (con la barra espaciadora) y el navegador lo interpretará como válido.
Referencia $(this) en los eventos:
El denominador this dentro de las funciones hace referencia al elemento que causó el evento, así
pues, si hacemos clic en el botón enviar, $(this) se transforma en el propio elemento.
Si tenemos el siguiente código:
Como podemos apreciar, guardamos en las variables nombre y domicilio los datos ingresados. Si
el usuario ingresó espacios en blanco dentro del nombre o el domicilio, acumulamos los errores
(dentro del array errores) e informamos sobre estos.
Length es una propiedad de los array o vectores que nos indica la cantidad de elementos que
posee.
Cuando algún campo no es válido, guardamos un mensaje de error dentro del array. Al finalizar la
validación, vemos la cantidad de errores recogidos, de existir uno o más, mostramos una ventana
de alerta para informar sobre estos y retornamos false (el formulario no se envía al servidor).
Si la cantidad de errores de validación es 0, retornamos true y el formulario es enviado al
servidor.
hide()
Su efecto sería esconder de pantalla los dos botones cuyo class es btn.
Cabe destacar que los elementos quedan ocultos (no visibles) y que no son eliminados del DOM.
Podemos, a su vez, dar un efecto mientras estos se ocultan, pasando por parámetro la cantidad
(en milisegundos que dura el efecto).
show():
toggle():
Es una combinación entre hide y show, puesto que si los elementos están ocultos los mostrará,
caso contrario, los ocultará.
Actividad de repaso
La validación de formularios, ¿solo debe existir del lado del servidor?
Verdadero
Falso
Justificación
Propiedades: son las que indican un estado de los elementos, así, por ejemplo:
required = ’’ nos indica que el elemento tiene un estado de requerido.
readonly = ‘’ nos indica que el elemento es solo lectura (el usuario no puede ingresar
valores en este, por ejemplo, completar contenido en un input de texto).
disabled = ’’ el elemento no puede tener el foco ni se responderá a los clics. Esta propiedad
se utiliza, mayormente, en los botones.
Las propiedades requieren un parámetro booleano (true o false) en su llamada. Por ejemplo, si
indicamos true en la propiedad disabled, el elemento se deshabilita.
Este ejemplo deshabilita todos los elementos que posean un valor de class btn.
La segunda quita la obligatoriedad de completar datos en el input cuyo ID es domicilio (el usuario
no necesita completarlo - se transforma en optativo).
Atributos: son aquellas palabras que se encuentran dentro de las etiquetas HTML y que
tienen un valor definido. Veamos las más importantes:
name: el nombre del elemento.
class: la clase CSS de los elementos.
type: el tipo de elemento.
Para modificar los atributos de los elementos, podemos valernos del siguiente código:
La línea primera cambia el tipo del input cuyo ID es nombre, transformándolo en un input del tipo
password.
La segunda línea de código cambia la class del botón ID botón_cancelar a su nuevo valor “botón”.
La tercera cambia el nombre del elemento cuyo ID es botón_enviar a su valor mi_boton
Dentro del dinamismo que podemos obtener con esta poderosa herramienta, está la de cambiar
la forma en que se ven los elementos en pantalla. Una de estas utilidades es la función css().
A todos los elementos cuya class sea btn les hemos agregado un color de fondo negro, letras
blancas, un borde de 1 pixel, un radio de borde (esquinas redondeadas) en 5 pixeles, un color de
borde gris, espacio entre el texto y los bordes (superior, inferior, izquierdo y derecho) de 5 pixeles.
Actividad de repaso
Siguiendo el código presentado:
<label for="nombre">Nombre</label><br>
<input type="text" id="nombre" name="nombre">
<button class="btn" name="nombre">Enviar</button>
$(“button”).attr(“readonly”, “true”);
$(".btn").show();
$(“button”).prop(“disabled”, false);
Justificación
¡A practicar!
Vamos a seguir trabajando en la creación de un sistema de organización para la clase de Química
Orgánica de una escuela. Ahora, vamos a poner en práctica lo aprendido sobre clases de PHP.
1. Debemos crear las estructuras de clases programáticas. Por ende, debemos definir los
niveles de la estructura. Los datos que tenemos son:
Sabemos que todos los integrantes de la clase son personas, es decir, debemos
crear una clase personas a las cuales luego extenderemos las subclases alumnos,
profesores y celadores.
Sabemos por requerimiento del usuario que las personas compartirán nombre,
apellido, email y dirección.
Nombre: "Pedro"
Apellido "Picapiedras"
Email: "pedro@picapiedras.com"
Dirección: "Rocallosas 50"
Legajo: "21211/5"
3. De tener en una base de datos llamada escuela, dentro de ella una tabla llamada
alumnos, ¿cómo recuperarían y mostrarían los alumnos registrados?
Para conocer las respuestas más adecuadas a los interrogantes, descargar el siguiente PDF.
Cierre
jQuery, además de ser el framework de trabajo JavaScript más utilizado en la actualidad, nos
permite con gran facilidad interactuar con los elementos del DOM al permitirnos manipular sus
propiedades, atributos, estilos y visibilidad.
Gracias a estas herramientas y, si tenemos en cuenta que podemos utilizarlas en todas sus
combinaciones, nos permitirá realizar páginas web más interactivas y amigables para los
usuarios.
Video de habilidades
Elijamos una página web de nuestra preferencia y realicemos cambios en los estilos de
algunos elementos. Por ejemplo, agregar letras en negrita, aumentar el tamaño de algunos
textos y cambiarles el color.
Presentemos una captura de la página original y otra con los cambios realizados.
Glosario