22 - Métodos del DOM

Estructura inicial

En nuestra carpeta de proyecto crearemos la siguiente estructura:

/
├── js/
│   └── 22-metodos-dom.js
└── index.html

Y un código sencillo para nuestro HTML:

<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>22 - Métodos del DOM</title>
</head>
<body>
    <h1>Temario de JavaScript</h1>
    <div id="app">
        <h2 class="titulo">Soy un h2</h2>
        <p>Soy un párrafo</p>
    </div>
    <script src="./js/22-metodos-dom.js"></script>
</body>
</html>

IMPORTANTE: El script debe cargarse al final de <body>


Seleccionar elementos

Para seleccionar un elemento de nuestro HTML podemos utilizar los siguientes métodos:

/* Seleccionando un elemento por ID */
const app = document.getElementById("app")

/* Seleccionando elementos por clase */
const titulos = document.getElementsByClassName("titulo")

/* Seleccionando elementos por etiqueta */
const parrafos = document.getElementsByTagName("p")

No obstante, hoy en día existe un método más sencillo para hacer esto mediante selectores de CSS:

/* Seleccionando un elemento por ID */
const app = document.querySelector("#app")

/* Seleccionando un elemento por clase */
const titulo = document.querySelector(".titulo")

/* Seleccionando un elemento por etiqueta */
const parrafo = document.querySelector("p")

También podemos usar querySelectorAll(), en cuyo caso devolverá un array de componentes


Modificar elementos

Podemos modificar tanto elementos que seleccionemos de nuestro HTML como elementos que creemos desde JavaScript.

Veamos algunas de sus propiedades:

innerText e innerHTML

Nos permite modificar el contenido interior de una etiqueta:

const titulo = document.querySelector(".titulo")

titulo.innerText = "Nuevo valor" //<h2 class="titulo">Nuevo valor</h2>
titulo.innerHTML = "Nuevo <i>valor</i>" //<h2 class="titulo">Nuevo <i>valor</i></h2>

Por temas de seguridad, no se recomienda usar innerHTML

style

Nos permite modificar el estilo en línea de ese elemento.

Su estructura sería:

elemento.style.tipoEstilo = "valor"

Veamos un ejemplo:

const parrafo = document.querySelector("p")

parrafo.style.color = "purple"
parrafo.style.margin = "20px" //<p style="color: purple; margin: 20px;">...

classList

Nos permite modificar las clases de un elemento:

const parrafo = document.querySelector("p")

/* Añadir clases */
parrafo.classList.add("negrita") //<p class="negrita">...

/* Borrar clases */
parrafo.classList.remove("negrita") //<p>...

/* Alternar clases (Si tiene la clase la borra y no la tiene se la añade) */
parrafo.classList.toggle("negrita") //<p class="negrita">..
parrafo.classList.toggle("negrita") //<p>..

/* Reemplazar clases */
parrafo.classList.add("negrita")
parrafo.classList.replace("negrita", "cursiva") // <p class="cursiva">...

Más propiedades


Crear elementos

Su estructura sería:

document.createElement("elemento")

Veamos un ejemplo de cómo crear un elemento, insertarle texto y añadirlo a nuestro HTML:

const app = document.querySelector("#app")

const saludo = document.createElement("p")
saludo.innerText = "Hola, mundo."

app.appendChild(saludo)

Como puede observarse, para añadir nuestro elemento creado a otro existente usamos appendChild()


Borrar elementos

Usaremos el método remove() cuya estructura es:

elemento.remove()

Veamos un ejemplo:

const titulo = document.querySelector(".titulo")

titulo.remove()