S4. Manipulando El DOM: Sumario
S4. Manipulando El DOM: Sumario
getElementById
getElementsByTagName
getElementsByClassName
querySelector
querySelectorAll
innerText / textContent
innerHTML
outerHTML
setAttribute
removeAttribute
hasAttribute
createElement
removeChild
appendChild
insertBefore
addEventListener
removeEventListener
2. Dinamismo: El DOM permite que las páginas web se actualicen sin necesidad
de recargar toda la página. Por ejemplo, cuando se publica un nuevo tweet en
Twitter o se recibe un nuevo mensaje en una aplicación de chat, solo se
actualiza una parte del contenido sin recargar toda la página.
4. Integración con otras tecnologías: Las APIs web y otros servicios interactúan
con las páginas a través del DOM. Por ejemplo, una API de geolocalización
puede insertar un mapa en una página web actualizando el DOM.
4.2.1 Nodos
Todo en el DOM es un nodo. Esto incluye elementos, atributos, texto y más. Los
nodos son la base de la estructura del DOM, y cada uno tiene un tipo específico.
Por ejemplo, un nodo de tipo "Element" representa una etiqueta HTML, mientras
que un nodo de tipo "Text" representa el texto dentro de una etiqueta.
4.2.2 Elementos
Los elementos son el tipo de nodo más común y representan las etiquetas HTML
en una página. Cada elemento tiene un nombre de etiqueta (como div , a , p ,
etc.), y puede tener hijos, que pueden ser otros elementos, texto, o una
combinación de ambos.
Ejemplo:
<p>This is a <strong>paragraph</strong>.</p>
Aquí, <p> y <strong> son elementos. El elemento <p> tiene como hijo tanto texto
("This is a") como otro elemento ( <strong> ).
4.2.3 Atributos
Los atributos son nodos que definen propiedades de un elemento,
proporcionando información adicional sobre ese elemento. Los atributos están
siempre asociados a un nodo de elemento y nunca existen por sí solos en el árbol
del DOM.
Ejemplo:
En este caso, href y target son atributos del elemento <a> . El valor de href es
"https://www.example.com" y el valor de target es "_blank".
4.2.4 Texto
Los nodos de texto contienen el texto que está presente entre las etiquetas de un
elemento. En el DOM, cualquier texto que veas en una página web, incluso los
espacios y saltos de línea, está representado por un nodo de texto.
<p>This is a <strong>paragraph</strong>.</p>
Aquí, "This is a " y "paragraph" son nodos de texto. Es importante notar que
"paragraph" está dentro de un elemento <strong> , pero sigue siendo un nodo de
texto.
Entender estos componentes básicos del DOM es esencial para cualquier persona
que trabaje en el desarrollo web. Los nodos, elementos, atributos y texto forman
la estructura fundamental de cualquier página web, y conocer cómo se relacionan
entre sí y cómo manipularlos con JavaScript es la clave para crear experiencias
web interactivas y dinámicas.
4.3.1 getElementById
Este método selecciona un elemento por su atributo id . Cada ID en un
documento HTML debe ser único, por lo que este método siempre devolverá un
único elemento o null si no se encuentra ningún elemento con ese ID.
document.getElementById(id)
Ejemplo:
Supongamos que tenemos el siguiente HTML:
4.3.2 getElementsByTagName
Este método selecciona todos los elementos que tienen un nombre de etiqueta
específico y devuelve una colección (similar a un array) de esos elementos.
Sintaxis:
document.getElementsByTagName(tagName)
Ejemplo:
Si queremos seleccionar todos los elementos
<p> :
<p>Paragraph 1</p>
<p>Paragraph 2</p>
4.3.3 getElementsByClassName
Este método selecciona todos los elementos que tienen una clase específica.
Devuelve una colección de esos elementos.
document.getElementsByClassName(className)
Ejemplo:
Para seleccionar todos los elementos con la clase
highlight :
Usamos:
4.3.4 querySelector
Este método selecciona el primer elemento que coincide con un selector CSS
especificado. Es muy versátil y permite usar casi cualquier selector CSS que
desees.
Sintaxis:
document.querySelector(cssSelector)
Ejemplo:
Si queremos seleccionar el primer elemento con la clase
highlight :
Hacemos:
4.3.5 querySelectorAll
Al igual que querySelector , este método selecciona elementos basados en un
selector CSS. Sin embargo, querySelectorAll selecciona todos los elementos que
coincidan con el selector, devolviendo una NodeList.
Sintaxis:
document.querySelectorAll(cssSelector)
Ejemplo:
Para seleccionar todos los elementos con la clase
highlight :
Utilizamos:
innerText:
textContent:
Ejemplo:
Supongamos el siguiente HTML:
Con JavaScript:
4.4.2 innerHTML
La propiedad innerHTML nos permite obtener o establecer el contenido HTML
completo de un elemento. Esto incluye tanto el texto como cualquier marca HTML
dentro del elemento.
Ejemplo:
Dado el siguiente HTML:
Con JavaScript:
console.log(contentDiv.innerHTML);
// "Hello, <strong>World</strong>!"
// Modificar el contenido
contentDiv.innerHTML = 'New <em>content</em> here!';
4.4.3 outerHTML
Mientras que innerHTML se refiere al contenido dentro de un elemento, outerHTML
nos permite obtener o establecer el marcado HTML que representa el elemento y
su contenido.
Ejemplo:
Considerando el mismo HTML:
Con JavaScript:
console.log(contentDiv.outerHTML);
// "<div id="content">Hello, <strong>World</strong>!</div>"
4.5.1 getAttribute
Este método nos permite obtener el valor de un atributo específico de un
elemento.
Sintaxis:
Ejemplo:
Dado el siguiente HTML:
Con JavaScript:
console.log(hrefValue); // "<https://www.example.com>"
4.5.2 setAttribute
El método setAttribute nos permite establecer o modificar el valor de un atributo
específico de un elemento. Si el atributo no existe, lo crea; si ya existe, actualiza
su valor.
Sintaxis:
element.setAttribute(attributeName, value)
Ejemplo:
Usando el mismo enlace anterior:
4.5.3 removeAttribute
Como su nombre indica, removeAttribute nos permite eliminar un atributo y su valor
de un elemento.
Sintaxis:
element.removeAttribute(attributeName)
Ejemplo:
Dado el HTML:
Con JavaScript:
4.5.4 hasAttribute
Este método verifica si un elemento tiene un atributo específico y devuelve true si
lo tiene o false si no.
Sintaxis:
element.hasAttribute(attributeName)
Ejemplo:
Utilizando el mismo botón:
if (button.hasAttribute('disabled')) {
console.log('The button is disabled.');
} else {
console.log('The button is not disabled.');
}
remove: Elimina una o más clases del elemento. Si la clase no existe, no hace
nada.
Ejemplo:
element.classList.remove('inactive');
element.classList.remove('highlighted', 'visible');
Ejemplo:
Ejemplo:
if (element.classList.contains('active')) {
console.log('El elemento tiene la clase active.');
}
element.classList.add('active');
4.7.1 createElement
Este método permite crear un nuevo elemento del tipo especificado.
Sintaxis:
document.createElement(tagName)
Ejemplo:
Para crear un nuevo elemento
<p> :
Este código crea un nuevo elemento <p> , pero aún no se ha añadido al DOM.
4.7.2 appendChild
Una vez que hayamos creado un nuevo elemento con createElement , podemos
agregarlo al DOM usando appendChild . Este método añade un nodo al final de la
lista de hijos de un nodo padre especificado.
Sintaxis:
parentNode.appendChild(childNode)
Ejemplo:
Añadir el párrafo anterior al cuerpo del documento:
document.body.appendChild(newParagraph);
4.7.3 insertBefore
Si deseamos insertar un elemento en una posición específica y no al final,
podemos usar insertBefore . Este método permite insertar un nodo antes del nodo
de referencia dentro de un nodo padre.
Sintaxis:
parentNode.insertBefore(newNode, referenceNode)
Ejemplo:
Si queremos insertar nuestro párrafo anterior a otro elemento existente:
4.7.4 removeChild
Para eliminar un nodo del DOM, utilizamos removeChild . Es importante notar que
removeChild se llama en el nodo padre del elemento que queremos eliminar y
parentNode.removeChild(childNode)
Ejemplo:
Para eliminar el párrafo que hemos creado anteriormente:
document.body.removeChild(newParagraph);
manipular.
Ejemplo:
Supongamos que tenemos el siguiente elemento en nuestro HTML:
Ejemplo:
// CSS
/* background-color: blue; */
// JavaScript
element.style.backgroundColor = 'blue';
Ejemplo:
Ejemplo:
<div id="parent">
<p id="child">Este es un párrafo.</p>
</div>
Ejemplo:
<ul id="parent">
<li>Item 1</li>
<li id="child">Item 2</li>
<li>Item 3</li>
</ul>
Ejemplo:
<ul>
<li id="previousSibling">Item 1</li>
<li id="currentNode">Item 2</li>
<li id="nextSibling">Item 3</li>
</ul>
específico:
Ejemplo:
Supongamos que quieres encontrar todos los elementos
<p> dentro de un <div> :
Navegar por el DOM es una habilidad fundamental para los desarrolladores web.
Te permite acceder y manipular elementos de manera eficiente. Al comprender las
4.10.1 addEventListener
El método addEventListener permite asignar un manejador de eventos a un
elemento del DOM.
Sintaxis:
Ejemplo:
Este código hará que aparezca una alerta cada vez que el botón con el ID
"myButton" sea clicado.
4.10.2 removeEventListener
Los parámetros son los mismos que para addEventListener . Es importante destacar
que la función pasada a removeEventListener debe ser la misma referencia que la
función pasada a addEventListener . Esto significa que no se pueden eliminar
manejadores de eventos anónimos o funciones declaradas directamente.
Ejemplo:
function showAlert() {
alert('Button was clicked!');
}
button.addEventListener('click', showAlert);
// ...en algún punto posterior en el código
button.removeEventListener('click', showAlert);
button.addEventListener('click', function(event) {
console.log(event.type); // "click"
console.log(event.target); // el elemento button
});
Los eventos y los manejadores de eventos son cruciales para crear páginas web
interactivas. addEventListener y removeEventListener ofrecen una manera flexible y
potente de gestionar cómo responden tus páginas a la entrada del usuario.
Entender estos conceptos y saber cómo usarlos es esencial para cualquier
desarrollador web.