15 métodos JavaScript para la manipulación DOM para desarrolladores web
Como desarrollador web, con frecuencia necesita manipular el DOM, el modelo de objetos que utilizan los navegadores para especificar la estructura lógica de las páginas web, y en función de esta estructura para representar elementos HTML en la pantalla .
HTML define la estructura DOM por defecto . Sin embargo, en muchos casos es posible que desee manipular esto con JavaScript, por lo general con el fin de agregar funcionalidades adicionales a un sitio.
En esta publicación, encontrará una lista de 15 métodos básicos de JavaScript que ayudan a la manipulación DOM . Es probable que utilice estos métodos con frecuencia en su código, y también los encontrará en nuestros tutoriales de JavaScript.1. querySelector()
El método querySelector()
devuelve el primer elemento que coincide con uno o más selectores de CSS . Si no se encuentra ninguna coincidencia, devuelve null
.
Antes de que se introdujera querySelector()
, los desarrolladores utilizaron ampliamente el método getElementById()
que busca un elemento con un valor de id
. Especificado .
Aunque getElementById()
sigue siendo un método útil, pero con los querySelector()
y querySelectorAll()
más nuevos, querySelector()
querySelectorAll()
libremente elementos basados en cualquier selector de CSS, por lo que tenemos más flexibilidad.
Sintaxis
var ele = document.querySelector (selector);
ele
- Primer elemento coincidente onull
(si ningún elemento coincide con los selectores)selector
: uno o más selectores de CSS, como"#fooId"
,".fooClassName"
,".class1.class2"
o".class1, .class2"
Ejemplo de código
En este ejemplo, el primero
querySelector()
y su color cambia a rojo.párrafo uno
párrafo dos
div unopárrafo tres
div dos
var firstDiv = document.querySelector ('div'); firstDiv.style.color = 'red';
Demostración interactiva
Pruebe el método querySelector()
en la siguiente demostración interactiva. Simplemente escriba un selector que coincida con los que puede encontrar dentro de los cuadros azules (por ejemplo, #three
), y haga clic en el botón Seleccionar. Tenga en cuenta que si escribe .block
, solo se seleccionará su primera instancia .
2. querySelectorAll()
A diferencia de querySelector()
que solo devuelve la primera instancia de todos los elementos coincidentes, querySelectorAll()
devuelve todos los elementos que coinciden con el selector de CSS especificado .
Los elementos coincidentes se devuelven como un objeto NodeList
que será un objeto vacío si no se encuentran elementos coincidentes.
Sintaxis
var eles = document.querySelectorAll (selector);
eles
- Un objetoNodeList
con todos los elementos coincidentes como valores de propiedad. El objeto está vacío si no se encuentran coincidencias.selector
: uno o más selectores de CSS, como"#fooId"
,".fooClassName"
,".class1.class2"
o".class1, .class2"
Ejemplo de código
El siguiente ejemplo usa el mismo HTML que el anterior. Sin embargo, en este ejemplo, todos los párrafos se seleccionan con querySelectorAll()
y son de color azul.
párrafo uno
párrafo dos
div unopárrafo tres
div dos
var párrafos = document.querySelectorAll ('p'); for (var p de párrafos) p.style.color = 'blue';
3. addEventListener()
Los eventos se refieren a lo que sucede con un elemento HTML, como hacer clic, enfocar o cargar, a lo que podemos reaccionar con JavaScript. Podemos asignar funciones JS para escuchar estos eventos en elementos y hacer algo cuando el evento haya ocurrido.
Hay tres formas de asignar una función a un determinado evento.
Si foo()
es una función personalizada, puede registrarla como un detector de eventos de clic (llamar cuando se hace clic en el elemento del botón) de tres maneras:
var btn = document.querySelector ('botón'); btn.onclick = foo;
var btn = document.querySelector ('botón'); btn.addEventListener ('click', foo);
El método addEventListener()
(la tercera solución) tiene algunos pros ; es el último estándar, que permite la asignación de más de una función como oyentes de eventos a un evento, y viene con un útil conjunto de opciones.
Sintaxis
ele.addEventListener (evt, listener, [opciones]);
ele
: elemento HTML que escuchará el evento.evt
: el evento específico.listener
: por lo general, una función de JavaScript.options
- (opcional) Un objeto con un conjunto de propiedades booleanas (enumeradas a continuación).
Opciones | ¿Qué sucede cuando se establece en true ? |
capture | Detiene el burbujeo de eventos, es decir, evita la invocación de cualquier detector de eventos para el mismo tipo de evento en los antepasados del elemento. Para usar esta característica, puede usar 2 sintaxis:
|
once | El oyente es llamado solo la primera vez que ocurre el evento, luego se separa automáticamente del evento y ya no se activará más. |
passive | La acción predeterminada del evento no se puede detener con el método preventDefault (). |
Ejemplo de código
En este ejemplo, agregamos un detector de eventos de clic llamado foo
a la etiqueta HTML.
var btn = document.querySelector ('botón'); btn.addEventListener ('click', foo); función foo () {alerta ('hola'); }
Demostración interactiva
Asigne la función personalizada foo()
como un detector de eventos a cualquiera de los tres eventos siguientes: input
, click
o mouseover
y desencadenar el evento elegido en el campo de entrada inferior colocando, haciendo clic o escribiendo en él.
4. removeEventListener()
El método removeEventListener()
separa un detector de eventos agregado previamente con el método addEventListener()
del evento que está escuchando .
Sintaxis
ele.removeEventListener (evt, listener, [opciones]);
Utiliza la misma sintaxis que el método addEventListener()
mencionado anteriormente (excepto para la opción de once
que está excluida). Las opciones se utilizan para ser muy específicas sobre la identificación del oyente para ser separado.
Ejemplo de código
Siguiendo el ejemplo de código que utilizamos en addEventListener()
, aquí eliminamos el oyente de evento click llamado foo
del elemento.
btn.removeEventListener ('clic', foo);
5. createElement()
El método createElement()
crea un nuevo elemento HTML utilizando el nombre de la etiqueta HTML que se creará, como 'p'
o 'div'
.
Luego puede agregar este elemento a la página web usando diferentes métodos para la inserción DOM, como AppendChild()
(vea más adelante en esta publicación).
Sintaxis
document.createElement (tagName);
tagName
: el nombre de la etiqueta HTML que desea crear.
Ejemplo de código
Con el siguiente ejemplo, puede crear un nuevo elemento de párrafo:
var pEle = document.createElement ('p')
6. appendChild()
El método appendChild()
agrega un elemento como el último elemento secundario al elemento HTML que invoca este método.
El niño que se insertará puede ser un elemento creado recientemente o uno ya existente . En este último caso, se moverá de su posición anterior a la posición del último niño.
Sintaxis
ele.appendChild (childEle)
ele
: el elemento HTML al que se agregachildEle
como último hijo.childEle
- El elemento HTML agregado como el último elemento secundario deele
.
Ejemplo de código
En este ejemplo, insertamos un elemento es como el hijo de un
appendChild()
y los métodos createElement()
antes mencionados.var div = document.querySelector ('div'); var strong = document.createElement ('strong'); strong.textContent = 'Hola'; div.appendChild (fuerte);
Demostración interactiva
En la siguiente demostración interactiva, las letras de #a
a #r
son los elementos secundarios de los selectores de identificación #parent-one
, #parent-two
y #parent-three
.
Compruebe cómo funciona el método appendChild()
escribiendo un nombre de selector primario y secundario en los campos de entrada a continuación. También puede elegir niños que pertenecen a otro padre.
7. removeChild()
El método removeChild()
elimina un elemento secundario especificado del elemento HTML que llama a este método.
Sintaxis
ele.removeChild (childEle)
ele
: elemento principal dechildEle
.childEle
- El elemento hijo deele
.
Ejemplo de código
En este ejemplo, eliminamos el elemento que agregamos como un niño a la
appendChild()
anterior appendChild()
.div.removeChild (fuerte);
8. replaceChild()
El método replaceChild()
reemplaza un elemento hijo con otro perteneciente al elemento padre que llama a este método.
Sintaxis
ele.replaceChild (newChildEle, oldChileEle)
ele
- Elemento principal del cual los niños deben ser reemplazados.newChildEle
- Elemento hijo deele
que reemplazaráoldChildEle
.oldChildEle
- Elemento hijo deele
, que será reemplazado pornewChildEle
.
Ejemplo de código
En este ejemplo, el elemento hijo que pertenece a
Hola
var em = document.createElement ('em'); var strong = document.querySelector ('strong'); var div = document.querySelector ('div'); em.textContent = 'hola'; div.replaceChild (em, strong);
9. cloneNode()
Cuando tiene que crear un nuevo elemento que debe ser igual a un elemento ya existente en la página web, simplemente puede crear una copia del elemento ya existente utilizando el método cloneNode()
.
Sintaxis
var dupeEle = ele.cloneNode([deep])
dupeEle
- Copia del elementoele
.ele
: el elemento HTML que se copiará.deep
- (opcional) Un valor booleano. Si se establece entrue
,dupeEle
tendrá todos los elementos hijosele
, si se establece enfalse
se clonará sin sus elementos secundarios.
Ejemplo de código
En este ejemplo, creamos una copia para el elemento con cloneNode()
, luego lo agregamos al
appendChild()
mencionado appendChild()
.Como resultado,
hello
como contenido.Hola
var strong = document.querySelector ('strong'); var copy = strong.cloneNode (true); var div = document.querySelector ('div'); div.appendChild (copy);
10. insertBefore()
El método insertBefore()
agrega un elemento secundario especificado antes de otro elemento secundario . El método es llamado por el elemento padre.
Si el elemento secundario al que se hace referencia no existe o pasa explícitamente null
en su lugar, el elemento secundario que se insertará se agregará como el último elemento secundario del elemento principal (similar a appendChild()
).
Sintaxis
ele.insertBefore (newEle, refEle);
ele
- Elemento padre.newEle
- Nuevo elemento HTML para insertar.refEle
- Elemento hijo deele
antes de que se insertenewEle
.
Ejemplo de código
En este ejemplo, creamos un nuevo elemento con texto dentro y lo agregamos antes del elemento dentro del
Hola
var em = document.createElement ('em'); var strong = document.querySelector ('strong'); var div = document.querySelector ('div'); em.textContent = 'hola'; div.insertBefore (em, strong);
Demostración interactiva
Esta demostración interactiva funciona de manera similar a nuestra demostración anterior perteneciente al método appendChild()
. Aquí solo debe escribir los selectores de id de dos elementos secundarios (de #a
a #r
) en los cuadros de entrada, y puede ver cómo el método insertBefore()
mueve el primer elemento secundario especificado antes del segundo.
11. createDocumentFragment()
El método createDocumentFragment()
puede no ser tan conocido como los otros en esta lista, sin embargo es importante, especialmente si desea insertar múltiples elementos a granel, como agregar varias filas a una tabla.
Crea un objeto DocumentFragment
, que esencialmente es un nodo DOM que no es parte del árbol DOM . Es como un búfer donde podemos agregar y almacenar otros elementos (por ejemplo, varias filas) primero, antes de agregarlos al nodo deseado en el árbol DOM (por ejemplo, a una tabla).
¿Por qué no simplemente agregamos elementos directamente al árbol DOM? Debido a que la inserción de DOM causa cambios en el diseño, y es un proceso de navegador costoso ya que las múltiples inserciones de elementos consecuentes causarán más cambios de diseño.
Por otro lado, agregar elementos a un objeto DocumentFragment
no causa ningún cambio de diseño, por lo que puede agregar tantos elementos como desee antes de pasarlos al árbol DOM, lo que provoca un cambio de diseño solamente en este punto.
Sintaxis
document.createDocumentFragment ()
Ejemplo de código
En este ejemplo, creamos múltiples filas y celdas de tabla con el método createElement()
, luego las agregamos a un objeto DocumentFragment
, finalmente agregamos ese fragmento de documento a un HTML
var table = document.querySelector ("tabla"); var df = document.createDocumentFragment (); for (var i = 0; i <5; i ++) {var td = document.createElement ("td"); var tr = document.createElement ("tr"); td.textContent = i; tr.appendChild (td) df.appendChild (tr); } table.appendChild (df);
12. getComputedStyle()
Algunas veces desea verificar los valores de las propiedades CSS de un elemento antes de realizar cambios. Puede usar la propiedad ele.style
para hacer lo mismo; sin embargo, el método getComputedStyle()
se ha creado solo para este propósito, devuelve los valores calculados de solo lectura de todas las propiedades CSS de un elemento HTML especificado.
Sintaxis
var style = getComputedStyle (ele, [pseudoEle])
style
- Un objetoCSSStyleDeclaration
devuelto por el método. Tiene todas las propiedades CSS y sus valores del elementoele
.ele
: elemento HTML de los valores de propiedad de CSS que se obtienen.pseudoEle
- (opcional) Una cadena que representa un pseudo-elemento (por ejemplo,':after'
). Si se menciona esto, se devolverán las propiedades de CSS del pseudo-elemento especificado asociado conele
.
Ejemplo de código
En este ejemplo, obtenemos y alertamos el valor de width
calculado de un
getComputedStyle()
.var style = getComputedStyle (document.querySelector ('div')); alerta (style.width);
13. setAttribute()
El método setAttribute()
agrega un nuevo atributo a un elemento HTML o actualiza el valor de un atributo que ya existe.
Sintaxis
ele.setAttribute (nombre, valor);
ele
: el elemento HTML al que se agrega un atributo o cuyo atributo se actualiza.name
- El nombre del atributo.value
- El valor del atributo.
Ejemplo de código
En este ejemplo, agregamos el atributo contenteditable
a un
setAttribute()
, que hará que su contenido sea editable.Hola
var div = document.querySelector ('div'); div.setAttribute ('contenteditable', '')
14. getAttribute()
El método getAttribute()
devuelve el valor de un atributo específico que pertenece a un determinado elemento HTML.
Sintaxis
ele.getAttribute (nombre);
ele
: el elemento HTML del atributo que se solicita.name
- El nombre del atributo.
Ejemplo de código
En este ejemplo, alertamos el valor del atributo contenteditable
pertenece al
getAttribute()
.Hola
var div = document.querySelector ('div'); alerta (div.getAttribute ('contenteditable'))
15. removeAttribute()
El método removeAttribute()
elimina un atributo dado de un elemento HTML específico.
Sintaxis
ele.removeAttribute(name);
ele
: el elemento HTML del atributo que se debe eliminar.name
- El nombre del atributo.
Ejemplo de código
En este ejemplo, eliminamos el atributo contenteditable
del
Hola
var div = document.querySelector ('div'); div.removeAttribute ('contenteditable');
Cómo elegir los auriculares perfectos (2017)
Lo admitamos o no, algunos de nosotros siempre estamos comprando auriculares nuevos. Otros simplemente se frustran con un par de auriculares que simplemente están mal para ellos . Sin embargo, los auriculares realmente pueden ser inversiones de una sola vez, especialmente con las etiquetas de precios que vienen.
20 impresionantes cargadores animados y hilanderos
La conexión a Internet es cada vez más rápida, sin embargo, de vez en cuando, aún hay algunos momentos en los que debemos esperar a que se cargue una página web. Los diseñadores hacen todo lo posible para que su tiempo de espera sea divertido e indolora utilizando varios cargadores animados y creativos .Los c