Professional Documents
Culture Documents
Cap'tulo 5. DOM: 5.1. Çrbol de Nodos
Cap'tulo 5. DOM: 5.1. Çrbol de Nodos
Captulo 5. DOM
Captulo 5. DOM
- $:) ' Document Object Model * DOM . 0) '. $))*1$*) . ,0 (6. #
$)!'0$* ) ' .--*''* '. +6"$). 2 $)6($. 4 '. +'$$*) . 2 (6.
*(+' %.?
+ -($/ '*. +-*"-(*- . 2 - 4 ()$+0'- '. +6"$).
*(* .$
!0 -) *0( )/*.
? # #*< . $. 9: *-$"$)'( )/ +- ()$+0'-
!*-(. )$'''*.*0( )/*.
?
+ .- .0. *-8" ) .< . # *)1 -/$* ) 0) 0/$'$ $.+*)$' +- '
(4*-8 ' )"0% . +-*"-($:) D1< < 1-$+/E 4 04. ;)$. $! - )$.
. )0 )/-) )'!*-( $(+' ( )/-'*?
www.librosweb.es
53
Introduccin a JavaScript
Captulo 5. DOM
<body>
<p>Esta pgina es <strong>muy sencilla</strong></p>
</body>
</html>
Figura 5.1. rbol de nodos generado automticamente por DOM a partir del cdigo XHTML
de la pgina
) ' .,0 ( )/ -$*-< - /6)"0'* - +- . )/ 0) )** 4 '. !' #. $)$)
'. - '$*) . )/- )**.? )/-* )**< . # $)'0$* .0 /$+* D,0 . 1 -6 (6.
')/ E4.0*)/ )$*?
-85 ' 6-*' )**. 0',0$ - +6"$)
.$ (+/$+* .+ $' )*($)* "Documento"?
) -'*..$"0$ )/ .*.)**.>
www.librosweb.es
54
Introduccin a JavaScript
Captulo 5. DOM
Figura 5.2. Nodos generados automticamente por DOM para una etiqueta XHTML sencilla
'($.(!*-(<'.$"0$ )/ /$,0 /
>
<p>Esta pgina es <strong>muy sencilla</strong></p>
) -'*..$"0$ )/ .)**.>
** /$+* "Elemento" *-- .+*)$ )/ ' /$,0 / <p>?
** /$+* "TextoG*) '*)/ )$*/ 3/0' ' /$,0 / <p>?
*(* '*)/ )$* <p> $)'04 ).0$)/ -$*-*/- /$,0 /
<' /$,0 /
$)/ -$*-. /-).!*-( )0))** /$+* "Elemento" ,0 - +- . )/' /$,0 /
<strong> 4,0 -$1 ')**)/ -$*-?
'*)/ )$* ' /$,0 / <strong> " ) -.01 5*/-*)** /$+* "Texto" ,0
-$1 ')**" ) -*+*- <strong>?
Figura 5.3. Nodos generados automticamente por DOM para una etiqueta XHTML con otras
etiquetas XHTML en su interior
/-).!*-($:) 0/*(6/$ ' +6"$) ) 0) 6-*' )**. .$ (+- .$"0 '.
($.(.- "'.>
. /$,0 /.
. /-).!*-() )*.)**.> '+-$( -* .'+-*+$
/$,0 /4 '. "0)*)** .#$%* '+-$( -*4*).$./ ) '*)/ )$*/ 3/0'
' /$,0 /?
$0) /$,0 /
. )0 )/- )/-* */-<. .$"0 '($.(*
+-* $($ )/*)/ -$*-<+ -*'*.)**." ) -*.. -6))**.#$%* .0 /$,0 /
+- ?
www.librosweb.es
55
Introduccin a JavaScript
Captulo 5. DOM
*(* . +0 .0+*) -< '. +6"$).
#$/0' . +-*0 ) 6-*' . *) ($' .
)**.? 0) .8< ' +-* .* /-).!*-($:) . -6+$* 4 0/*(6/$*< .$ )* '.
!0)$*) . +-*+*-$*). +*- D,0 . 1 -6) (6. ')/ E '. ;)$. ,0
+ -($/ ) -0',0$ -)** '+6"$) !*-(. )$'' $)( $/?
www.librosweb.es
56
Introduccin a JavaScript
Captulo 5. DOM
5.3.1. getElementsByTagName()
*(* .0
+-*+*-$*)
' 1'*- ,0 . $)$ ')/ ' )*(- ' !0)$:) D ) ./ .*< documentE . '
)** +-/$- ' 0' . - '$5 ' ;.,0 '*. ' ( )/*.? ) ./ .*< *(* .
,0$ - ) */ ) - /**. '*. +6--!*. ' +6"$)< . 0/$'$5 ' 1'*- document *(* +0)/*
+-/$ ';.,0 ?
' 1'*- ,0 10 '1 ' !0)$:)
*)$$:) ,0 .0 /$,0 / *$)$
. 0) --4 )**. < )* 0)
)*-(' .? *- '* /)/*< . +-*
)'..$"0$ )/ .. $*) .?
' ($.( !*-(< . +*-8) - *-- - /**. '*. +6--!*. ' +6"$) *) ' .$"0$ )/
:$"*>
for(var i=0; i<parrafos.length; i++) {
var parrafo = parrafos[i];
}
www.librosweb.es
57
Introduccin a JavaScript
Captulo 5. DOM
5.3.2. getElementsByName()
!0)$:) getElementsByName() . .$($'- ' )/ -$*-< + -* ) ./ .* . 0.) '*.
' ( )/*. 04* /-$0/* name . $"0' ' +-6( /-* +-*+*-$*)*? ) ' .$"0$ )/
% (+'*<. */$ ) $- /( )/ ';)$*+6--!**) ')*(- $)$*>
var parrafoEspecial = document.getElementsByName("especial");
<p name="prueba">...</p>
<p name="especial">...</p>
<p>...</p>
*-('( )/ ' /-$0/* name . ;)$* +- '*. ' ( )/*.
,0 '* !$) )< +*- '*
,0 . 0) (7/** (04 +-6/$* +- - $- /( )/ ' )** . *? ) ' .*
'*. ' ( )/*.
radiobutton< ' /-$0/* name . *(;) /**. '*. radiobutton
,0 ./6)- '$*)*.<+*-'*,0 '!0)$:) 10 '1 0)*' $:) ' ( )/*.?
)/ -) / 3+'*- - O?I )* $(+' ( )/ !*-( *-- / ./ !0)$:)< 4 ,0 .:'* ' /$ )
) 0 )/ +- '*. ' ( )/*. /$+* <input> 4 <img>? (6.< /($7) /$ ) )
*).$ -$:)'*. ' ( )/*.04*/-$0/* id . $"0''+-6( /-* '!0)$:)?
5.3.3. getElementById()
!0)$:) getElementById() . ' (6. 0/$'$5 0)* . .--*'') +'$$*) .
2 $)6($.? /-/ ' !0)$:) +- ! -$ +- - $- /( )/ 0) )** 4
+* -' -*(*$!$-.0.+-*+$ .?
!0)$:) getElementById() 10 '1 ' ' ( )/*
04* /-$0/* id *$)$
*) ' +-6( /-* $)$* ) ' !0)$:)? *(* ' /-$0/* id . - ;)$* +-
' ( )/* 0)($.(+6"$)<'!0)$:) 10 '1 ;)$( )/ ')** . *?
var cabecera = document.getElementById("cabecera");
<div id="cabecera">
<a href="/" id="logo">...</a>
</div>
)/ -) / 3+'*- - O?I /($7) $)/ -+- / $)*-- /( )/ ./ !0)$:)< 4 ,0 10 '1
/($7) ,0 ''*. ' ( )/*. 04* /-$0/* name *$)$ *) ' +-6( /-*
+-*+*-$*)*'!0)$:)?
58
Introduccin a JavaScript
Captulo 5. DOM
./ (**< .$ . ,0$ - 9$- 0) +6--!* .$(+' ' !$)' 0) +6"$)
< .
) .-$*$)'0$- '.$"0$ )/ :$"*1-$+/>
// Crear nodo de tipo Element
var parrafo = document.createElement("p");
// Crear nodo de tipo Text
var contenido = document.createTextNode("Hola Mundo!");
// Aadir el nodo Text como hijo del nodo Element
parrafo.appendChild(contenido);
// Aadir el nodo Element como hijo de la pagina
document.body.appendChild(parrafo);
' +-* .* - $:) )0 1*. )**. +0 '' "- . - / $*.*< 4 ,0 $(+'$ '
0/$'$5$:) /- .!0)$*) . >
createElement(etiqueta)>- 0))** /$+* Element ,0 - +- . )/'
' ( )/*
04 /$,0 /. +.*(*+-6( /-*?
createTextNode(contenido)>- 0))** /$+* Text ,0 '( ) '
*)/ )$*/ 3/0' '*. ' ( )/*.
?
nodoPadre.appendChild(nodoHijo)>9 0))***(*#$%* */-*)**?
0/$'$5-'( )*.*.1 .*)'*.)**.#$/0' .> )+-$( -'0"-.
9 ')** Text *(*#$%* ')** Element 4*)/$)0$:). 9 ')**
Element *(*#$%* '";))** '+6"$)?
www.librosweb.es
59
Introduccin a JavaScript
Captulo 5. DOM
<p id="provisional">...</p>
) ' % (+'* )/ -$*-< . */$ ) ' )** ,0 - +- . )/ ' )' ( $)/ '
!0)$:) document.getElementById()? *)/$)0$:)< . */$ ) ' /-$0/* href '
)' ( $)/ enlace.href? - */ ) - +*- % (+'* ' /-$0/* id< . 0/$'$5-8
enlace.id?
. +-*+$ . )* .*) /) !6$' . */ ) - *(* '*. /-$0/*.
? -
*/ ) - ' 1'*- 0',0$ - +-*+$ ' )**< . 0/$'$5- ' /-$0/* style?
'.$"0$ )/ % (+'**/$ ) '1'*- '+-*+$ margin '$(" )>
var imagen = document.getElementById("imagen");
alert(imagen.style.margin);
<img id="imagen" style="margin:0; border:0;" src="logo.png" />
0),0 ' !0)$*)($ )/* . #*(*"7) * )/- $./$)/*. )1 "*- .< '*. - .0'/*. )*
.*) 3/( )/ $"0' .< *(* (0 ./-) '. .$"0$ )/ . $(6" ) . ,0 .*) ' - .0'/*
% 0/- ':$"*)/ -$*- )$./$)/*.)1 "*- .>
www.librosweb.es
60
Introduccin a JavaScript
Captulo 5. DOM
Figura 5.4. Valores que muestra Internet Explorer al acceder a las propiedades CSS a travs
de JavaScript
Figura 5.5. Valores que muestra Firefox al acceder a las propiedades CSS a travs de
JavaScript
$ ' )*(- 0) +-*+$ . *(+0 ./*< . .0 1'*- (*$!$)*
'$" -( )/ .0)*(- >
var parrafo = document.getElementById("parrafo");
alert(parrafo.style.fontWeight); // muestra "bold"
<p id="parrafo" style="font-weight: bold;">...</p>
/-).!*-($:) ' )*(- '. +-*+$ . *(+0 ./. *).$./ ) '$($)/**. '*. "0$*) . ( $*. D-E 4 .-$$- ) (4;.0' ' ' /- .$"0$ )/ "0$:)
( $*?*)/$)0$:). (0 ./-)'"0)*. % (+'*.>
font-weight . /-).!*-( ) fontWeight
line-height . /-).!*-( ) lineHeight
border-top-style . /-).!*-( ) borderTopStyle
list-style-image . /-).!*-( ) listStyleImage
' ;)$* /-$0/*
,0 )* /$ ) ' ($.(* )*(- )
4 ) '. +-*+$ .
. ' /-$0/* class? *(* ' +'- class ./6 - . -1 +*- 1-$+/< )* .
+*.$' 0/$'$5-' +- - ' /-$0/* class ' ' ( )/*
? ) .0 '0"-<
0/$'$5 ')*(- className +- -'/-$0/* class
>
var parrafo = document.getElementById("parrafo");
alert(parrafo.class); // muestra "undefined"
alert(parrafo.className); // muestra "normal"
<p id="parrafo" class="normal">...</p>
www.librosweb.es
61
Introduccin a JavaScript
Captulo 5. DOM
Ejercicio 12
Completar el cdigo JavaScript proporcionado para que cuando se pinche sobre el enlace se
muestre completo el contenido de texto. Adems, el enlace debe dejar de mostrarse
despus de pulsarlo por primera vez. La accin de pinchar sobre un enlace forma parte de
los "Eventos" de JavaScript que se ven en el siguiente captulo. En este ejercicio, slo se
debe saber que al pinchar sobre el enlace, se ejecuta la funcin llamada muestra().
Ejercicio 13
Completar el cdigo JavaScript proporcionado para que se aadan nuevos elementos a la
lista cada vez que se pulsa sobre el botn. Utilizar las funciones DOM para crear nuevos
nodos y aadirlos a la lista existente. Al igual que sucede en el ejercicio anterior, la accin de
pinchar sobre un botn forma parte de los "Eventos" de JavaScript que se ven en el siguiente
captulo. En este ejercicio, slo se debe saber que al pinchar sobre el botn, se ejecuta la
funcin llamada anade().
www.librosweb.es
62