Saltar la navegación

DOM

A través del DOM (Document Object Model o Modelo de Objetos del Documento) podemos acceder a los diferentes elementos de una página y consultar sus propiedades, modificarlas...

document.getElementById

Partamos de un ejemplo sencillo (pegad el siguiente código dentro de la etiqueta BODY):

<p id="ejemplo">Contenido de ejemplo</p>
<script>
    function verHTML(id) {
        alert( document.getElementById(id).innerHTML );
    }
    function actualizarHTML(id) {
        document.getElementById(id).innerHTML += " modificado"
    }
    verHTML("ejemplo");
    actualizarHTML("ejemplo");
    verHTML("ejemplo");
</script>

Como vemos, accedemos al elemento con el identificador "ejemplo":

  • Primero leemos su contenido
  • Luego lo actualizamos
  • Finalmente volvemos a leerlo (ya modificado)

Hay varias formas de acceder al contenido. Hasta ahora hemos visto document.getElementById, que nos permite acceder a un elemento a partir de su identificador, pero hay otras formas. Las más utilizadas son:

document.getElementsByTagName

Nos permite acceder a determinada etiqueta.

Accedamos, por ejemplo, a los párrafos. Vamos a numerarlos:

<p>Párrafo</p>
<p>Párrafo</p>
<p>Párrafo</p>
<script>
    function numerarParrafos(){
        var parrafos = document.getElementsByTagName("P");
        for (var i=0; i<parrafos.length; i++) {
            parrafos[i].innerHTML += " "+i;
        }
    }
    numerarParrafos();
</script>

document.getElementsByTagName

Funciona como el ejemplo anterior (devuelve un Array). Esto es práctico, por ejemplo, para acceder a un conjunto de campos de formulario de tipo "radio". Estos campos comparten nombre (name):

<input type="radio" name="nombre" id="nombre-a" value="a" checked="checked" />
<input type="radio" name="nombre" id="nombre-b" value="b"  />
<input type="radio" name="nombre" id="nombre-c" value="c" />

document.getElementsByClassName

Nos permite acceder a los elementos que tienen determinada clase. Podríamos, por ejemplo, colorear los párrafos impares:

<p class="impar">Párrafo</p>
<p class="par">Párrafo</p>
<p class="impar">Párrafo</p>
<script>
    function colorearParrafosImpares(){
        var parrafos = document.getElementsByClassName("impar");
        for (var i=0; i<parrafos.length; i++) {
            parrafos[i].style.color = "red";
        }
    }
    colorearParrafosImpares();
</script>

Más información sobre cómo acceder a los elementos del documento

Debes saber que...

document.getElementsByClassName no funcionará en algunos navegadores antiguos (en IE8, por ejemplo). Si quieres que funcione en todas partes tendrás que crear una función propia que haga lo mismo.

Encontrarás más información en estos enlaces:

Otra opción es usar una librería JavaScript como jQuery, que nos facilita esa y otras tareas. Hablaremos de jQuery más adelante.