Crear cualquier tipo de elemento HTML desde javaScript de forma dinámica
El método del documento createElement() permite crear dentro del script cualquier tipo de
nodo para su manipulación y posterior inserción en el documento.
Este método recibe un único parámetro de tipo string con el nombre de la etiqueta del elemento a
crear.
Vamos a crear un nodo de tipo párrafo, que tenga como contenido la frase "Esto es un párrafo de
muestra", y lo vamos a añadir al DOM.
Crear el elemento con el método
Añadirle la propiedad textContent
Pasar el elemento al DOM
function creaParrafo() {
const PARRAFO = document.createElement('p');
PARRAFO.textContent = 'Este es un párrafo de prueba';
document.getElementById('pizarra').append(PARRAFO);
}
Uso del método append() para insertar nodos dentro de otros nodos del DOM, pero también en
nodos dinámicos
El método append no solo permite pasar los nodos creados de forma dinámica al DOM, sino que
también nos permite añadir nodos creados de forma dinámica a otros nodos creados también en el script.
Vamos a crear de forma dinámica un div, que a su vez contendrá un título h3 y un párrafo. Cada uno de
estos 3 elementos tendrá su propia clase CSS, y su contenido en el caso del título y el párrafo. Por
último añadimos el div al DOM.
Creo los 3 elementos llamando al método 3 veces, una para cada nodo.
Defino atributos (class y contenido) para cada uno de los elementos
Inserto el título y el párrafo dentro del div
Paso el div al DOM
function creaFicha() {
const FICHA = document.createElement('div');
const TITULO = document.createElement('h3');
const PARRAFO = document.createElement('p');
FICHA.className = 'modelo-ficha';
TITULO.className = 'titulo-ficha';
PARRAFO.className = 'parrafo-ficha';
TITULO.textContent = 'Ficha del elemento';
PARRAFO.textContent = 'Descripción del elemento';
FICHA.append(TITULO, PARRAFO);
document.getElementById('fichas').append(FICHA);
}
Método setAttribute() para modificar cualquier atributo de un nodo
Con este método podemos establecer y modificar cualquier atributo de un elemento HTML desde el script.
Incluso podemos definir atributos que no sean estándar del lenguaje HTML.
El método recoge 2 parámetros, el primero es el nombre del atributo que vamos a modificar, y el segundo
su valor. Ambos son de tipo string.
Vamos a añadir un párrafo con formato de cuadro de mensaje en el cual aparecerá una imagen junto a un
texto que sea editable por el usuario.
Primero creamos 3 elementos: div, img y p
Aplicar clases CSS para cada uno
Definir atributo src para la imagen y contentEditable para el párrafo
Vamos a usar el método remove() para eliminar los nodos seleccionados del documento
Necesitamos una función que genere un elemento select con tantos option como
mensajes tengamos en el apartado anterior. Y cuando seleccionemos el mensaje desde el option
podremos eliminarlo pulsando en un botón adyacente.
Desde un botón ejecutamos una función que construya los elementos option del select
Cada option tendrá como texto "Mensaje 1, 2,...". O el propio título del mensaje
El atributo valuede cada option debe ser su número de índice
Esto lo hacemos mediante createElement('option')
Cuando seleccionamos un mensaje usamos su número de índice para eliminar ese elemento de su
colección
Cada vez que eliminemos un mensaje debemos reconstruir el select
function creaSelect() {
let mensajes = document.getElementsByClassName('bloque');
document.getElementById('sel_msj').innerHTML = '';
for (let i = 0; i < mensajes.length; i++) {
const OPT = document.createElement('option');
OPT.textContent = 'Mensaje ' + (i + 1);
OPT.setAttribute('value', i);
document.getElementById('sel_msj').append(OPT);
}
}
function borraMensaje() {
let posicion = document.getElementById('sel_msj').value;
let mensajes = document.getElementsByClassName('bloque');
mensajes[posicion].remove();
creaSelect();
}