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">...
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()