Una vez que se ha accedido a un nodo, el siguiente paso natural consiste en acceder y/o modificar sus atributos y propiedades. Mediante DOM, es posible acceder de forma sencilla a todos los atributos XHTML y todas las propiedades CSS de cualquier elemento de la página.
Los atributos XHTML de los elementos de la página se transforman automáticamente en propiedades de los nodos. Para acceder a su valor, simplemente se indica el nombre del atributo XHTML detrás del nombre del nodo.
El siguiente ejemplo obtiene de forma directa la dirección a la que enlaza el enlace:
var enlace = document.getElementById("enlace");alert(enlace.href); // muestra http://www...com <a id="enlace" href="http://www...com">Enlace</a>
En el ejemplo anterior, se obtiene el nodo DOM que representa el enlace mediante la funcióndocument.getElementById()
. A continuación, se obtiene el atributo href
del enlace medianteenlace.href
. Para obtener por ejemplo el atributo id
, se utilizaría enlace.id
.
Las propiedades CSS no son tan fáciles de obtener como los atributos XHTML. Para obtener el valor de cualquier propiedad CSS del nodo, se debe utilizar el atributo style
. El siguiente ejemplo obtiene el valor de la propiedad margin
de la imagen:
var imagen = document.getElementById("imagen");alert(imagen.style.margin); <img id="imagen" style="margin:0; border:0;" src="logo.png" />
Aunque el funcionamiento es homogéneo entre distintos navegadores, los resultados no son exactamente iguales, como muestran las siguientes imágenes que son el resultado de ejecutar el código anterior en distintos navegadores:
Si el nombre de una propiedad CSS es compuesto, se accede a su valor modificando ligeramente su nombre:
var parrafo = document.getElementById("parrafo");alert(parrafo.style.fontWeight); // muestra "bold" <p id="parrafo" style="font-weight: bold;">...</p>
La transformación del nombre de las propiedades CSS compuestas consiste en eliminar todos los guiones medios (-
) y escribir en mayúscula la letra siguiente a cada guión medio. A continuación se muestran algunos ejemplos:
font-weight
se transforma enfontWeight
line-height
se transforma enlineHeight
border-top-style
se transforma enborderTopStyle
list-style-image
se transforma enlistStyleImage
El único atributo XHTML que no tiene el mismo nombre en XHTML y en las propiedades DOM es el atributo class
. Como la palabra class
está reservada por JavaScript, no es posible utilizarla para acceder al atributo class
del elemento XHTML. En su lugar, DOM utiliza el nombre className
para acceder al atributo class
de XHTML:
var parrafo = document.getElementById("parrafo");alert(parrafo.class); // muestra "undefined"alert(parrafo.className); // muestra "normal" <p id="parrafo" class="normal">...</p>