Podemos obtener la referencia a una marca HTML, y a partir de esta referencia llamar al método getElementsByTagName visto en un concepto anterior:
let obj=document.getElementById("bloque2") let lista=obj.getElementsByTagName('p')
La cual retorna un vector con todas las marcas contenidas en ese bloque (es decir, no es respecto a todo el documento como el problema anterior)
Esto puede ser de gran utilidad cuando queremos hacer cambios a un conjunto de marcas similares del documento, pero que no afecten a todo el documento.
Para probar el método, agregaremos un punto al final de cada párrafo que están contenidos en una marca (div).
La página html es:
<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Prueba</title> </head> <body> <div id="bloque1"> <h1>Primer Bloque de párrafos.</h1> <p>Este es el primer párrafo</p> <p>Este es el segundo párrafo</p> <p>Este es el tercer párrafo</p> </div> <div id="bloque2"> <h1>Segundo Bloque de párrafos.</h1> <p>Este es el primer párrafo</p> <p>Este es el segundo párrafo</p> <p>Este es el tercer párrafo</p> </div> <input type="button" value="Agregar un punto al final de cada párrafo" onClick="cambiarParrafos()"> <script src="funciones.js"></script> </body> </html>
Agrupamos los párrafos en dos div
function cambiarParrafos() { let obj = document.getElementById("bloque2") let lista = obj.getElementsByTagName('p') for (let elemento of lista) elemento.childNodes[0].nodeValue = elemento.childNodes[0].nodeValue + '.' }
Lo más importante del problema es ver como llamamos al método getElementsByTagName. Si queremos la referencia a todas las marcas de la página lo hacemos :
let lista=document.getElementsByTagName('p')
Si queremos la referencia a todas las marcas similares contenidas en un div lo hacemos:
let obj = document.getElementById("bloque2") let lista = obj.getElementsByTagName('p')
Es decir, primero obtenemos la referencia del div con id llamado bloque2 y luego, mediante el objeto devuelto, llamamos al método getElementsByTagName.
Nos queda luego recorrer, en este caso con un for of los elementos del array y proceder a modificar el valor almacenado en cada párrafo:
for (let elemento of lista) elemento.childNodes[0].nodeValue = elemento.childNodes[0].nodeValue + '.'