JavaScript 13 - DOM
JavaScript 13 - DOM
Ejemplos
Ejercicios
ALBERT BASSONS 2
Document Object Model
ALBERT BASSONS 3
Document Object Model
ALBERT BASSONS 4
Document Object Model
ALBERT BASSONS 5
Nodos y tipos
ALBERT BASSONS 6
Ejemplo
ALBERT BASSONS 7
Relaciones entre nodos
• Las relaciones entre nodos se definen como: padre (parent),
hijos (children) y hermanos (siblings).
ALBERT BASSONS 8
Ejemplo
• Prueba este ejemplo sobre el código HTML anterior (coloca el
script a continuación):
ALBERT BASSONS 9
Relaciones entre nodos
node.parentNode
node.firstChild
node.lastChild
node.nextSibling
node.previousSibling
ALBERT BASSONS 10
Relaciones entre nodos
• Para obtener un listado de nodos con los hijos de otro nodo,
usamos la propiedad node.childNodes.
ALBERT BASSONS 11
Relaciones entre nodos
head
‘Probando’
ALBERT BASSONS 12
Ejemplo
ALBERT BASSONS 13
Relaciones entre nodos
• Para solventar el problema anterior, usaremos las siguientes
propiedades en lugar de nextSibling, previousSibling,
parentNode y childNodes:
ALBERT BASSONS 14
Ejemplo
ALBERT BASSONS 15
Los nodos son objetos
• Como ya habéis podido intuir, los nodos son objetos, así que
disponen de propiedades y métodos (acabamos de ver unas
cuantas propiedades).
ALBERT BASSONS 16
Ejemplo: analizador DOM
• Para comprender la estructura de los
documentos haciendo pruebas, he creado una
función recursiva que es capaz de mostrarnos
como texto la estructura DOM a partir de un
elemento HTML.
ALBERT BASSONS 17
Ejemplo: analizador DOM (1 de 2)
ALBERT BASSONS 18
Ejemplo: analizador DOM (2 de 2)
ALBERT BASSONS 19
Localizando nodos (1)
• Podemos navegar por el documento a partir de un nodo
cualquiera.
ALBERT BASSONS 20
Localizando nodos (2)
• Si queremos localizar un nodo concreto dentro de toda la
estructura del documento, disponemos del método:
document.getElementById(‘id’).
“referencia” apunta a
este nodo.
ALBERT BASSONS 21
Localizando nodos (3)
• Existen varias formas sencillas para localizar los nodos :
ALBERT BASSONS 22
Ejemplo
ALBERT BASSONS 23
Localizando nodos (4 y 5)
ALBERT BASSONS 24
Ejemplo
this input
this.parentNode form.
ALBERT BASSONS 25
Ejemplo
evento event
evento.target input
evento.target.parentNode form.
ALBERT BASSONS 26
Localizando nodos (6)
• Además, el objeto document tiene una serie de propiedades
(las veremos en estas transparencias un poco más abajo)
que recuperan un listado de elementos de un tipo concreto
(formularios, enlaces, imágenes…) existentes en el
documento.
ALBERT BASSONS 27
Ejemplo
ALBERT BASSONS 28
Ejemplo
ALBERT BASSONS 29
Localizando nodos (7)
• Y por último, otra forma sencilla. Existen dos métodos de
document que permiten seleccionar elementos haciendo uso
de los selectores CSS.
ALBERT BASSONS 30
Ejemplo
ALBERT BASSONS 31
Localizando nodos
• Es obvio que para acceder a nodos concretos se debe
conocer muy bien la estructura HTML de la web.
ALBERT BASSONS 32
El nodo document
• Cuando un documento HTML es cargado mediante un
navegador, se convierte en el document object.
ALBERT BASSONS 33
Propiedades de document
Propiedad Descripción
document.anchors Devuelve una colección con las anclas del
documento
document.applets Devuelve una colección de los applets del
documento
document.baseURI Devuelve la URI base del documento
document.body Retorna el elemento body del documento
document.cookie Retorna todos los pares nombre/valor de las
cookies en el documento
ALBERT BASSONS 34
Propiedades de document
Propiedad Descripción
document.doctype Retorna el document type
document.documentElement Retorna el elemento html del
documento
document.documentURI Establece o cambia la URI del
documento
document.activeElement Retorna el elemento que tiene
actualmente el foco en el documento.
ALBERT BASSONS 35
Propiedades de document
Propiedad Descripción
document.domain Devuelve el nombre del dominio del servidor
que cargó el documento
document.embeds Retorna una colección con los elementos
integrados
document.forms Retorna una colección con los formularios
document.head Retorna el elemento head
document.images Retorna una colección con las imágenes
document.inputEncoding Retorna el conjunto de caracteres
document.lastModified Retorna la fecha y hora de la última
modificación
document.links Retorna una colección con los enlaces del
documento
ALBERT BASSONS 36
Propiedades de document
Propiedad Descripción
document.readyState Retorna el estado de carga del documento
document.referrer Retorna la URL del documento que cargó el
documento actual
document.scripts Retorna una colección con los scripts del
documento
document.strictErrorCh Establece o retorna la comprobación de
ecking errores
document.title Establece o retorna el título del documento
document.URL Retorna la URL completa del documento
ALBERT BASSONS 37
Métodos de document
Método Descripción
document.getElementById() Retorna el elemento con la ID
especificada
document.getElementsByName() Retorna una colección de elementos
con el nombre especificado
document.getElementsByTagName() Retorna una colección de elementos
con la etiqueta especificada
ALBERT BASSONS 38
Métodos de document
Método Descripción
document.createAttribute() Crea un nodo atributo
document.createComment() Crea un nodo comentario
document.createDocumentFra Crea un nodo virtual para construir
gment() estructuras de nodos que luego
insertaremos en nuestra página
document.createElement() Crea un nodo elemento
document.createTextNode() Crea un nodo de texto
ALBERT BASSONS 39
Métodos de document
Método Descripción
document.normalize() Borra los nodos de texto en blanco, uniendo
los nodos adyacentes
document.normalizeDocu Borra los nodos de texto en blanco, uniendo
ment() los nodos adyacentes
document.renameNode() Renombra un nodo específico
document.write() Escribe en el documento HTML desde
Javascript
document.writeln() Lo mismo que antes pero añade el carácter
‘\n’ al final para indicar salto de línea
ALBERT BASSONS 40
Métodos de document
Método Descripción
document.adoptNode() Clona un nodo de otro documento al
documento actual. Por ejemplo podemos
adoptar nodos desde un iframe.
document.importNode() Importa un nodo desde otro documento, por
ejemplo desde un iframe.
document.open() Abre un flujo de salida HTML que recolecta la
salida de document.write()
document.close() Cierra el flujo de salida anteriormente
abierto.
ALBERT BASSONS 41
Los nodos element
• Como ya sabemos, todos los elementos HTML del
documento son representados en el DOM mediante element
nodes.
ALBERT BASSONS 42
Propiedades de element
Propiedad Descripción
element.accessKey Establece o retorna la tecla de acceso al
elemento
element.attributes Retorna un listado de nodos atributos del
elemento
element.childNodes Retorna un listado de hijos del elemento
element.className Establece o retorna la clase del elemento
element.clientHeight Retorna el alto visible de un elemento
element.clientWidth Retorna el ancho visible de un elemento
element.dir Establece o retorna la dirección del texto
element.firstChild Retorna el primer hijo de un elemento
ALBERT BASSONS 43
Propiedades de element
Propiedad Descripción
element.id Establece o retorna la id de un elemento
element.innerHTML Establece o retorna el contenido de un
elemento
element.lang Establece o retorna el código de lenguaje
element.lastChild Retorna el último hijo de un elemento
element.namespaceURI Retorna el espacio de nombres URI de un
elemento
element.nextSibling Retorna el siguiente hermano del elemento
element.nodeName Retorna el nombre del elemento
element.nodeType Retorna el tipo de nodo del elemento
element.nodeValue Establece o retorna el valor del elemento
ALBERT BASSONS 44
Propiedades de element
Propiedad Descripción
element.offsetHeight Retorna el alto de un elemento
element.offsetWidth Retorna el ancho de un elemento
element.offsetLeft Retorna el desplazamiento desde la izquierda
element.offsetParent Retorna el offset del padre del elemento
element.offsetTop Retorna el desplazamiento desde arriba
element.ownerDocument Retorna el document object del elemento
element.parentNode Retorna el padre del elemento
element.previousSibling Retorna el hermano anterior del elemento
ALBERT BASSONS 45
Propiedades de element
Propiedad Descripción
element.scrollHeight Retorna el alto total del elemento
element.scrollLeft Retorna la distancia entre el borde izquierdo de
un elemento y la vista
element.scrollTop Retorna la distancia entre el borde superior de
un elemento y la vista
element.scrollWidth Retorna el ancho total de un elemento
element.style Establece o retorna el atributo estilo de un
elemento
ALBERT BASSONS 46
Propiedades de element
Propiedad Descripción
element.tabIndex Establece o retorna el orden de tabulación de un
elemento
element.tagName Retorna la etiqueta de un elemento
element.textContent Establece o retorna el contenido textual de un
nodo y sus descendientes
element.title Establece o retorna el título de un elemento
nodelist.length Retorna el número de elementos en una lista de
nodos
ALBERT BASSONS 47
Propiedades de element
Propiedad Descripción
element.parentEleme Retorna el elemento padre del elemento actual.
nt
element.children Retorna una colección con los elementos hijo,
excluyendo nodos de texto y comentarios.
element.previousEle Retorna el elemento anterior al mismo nivel.
mentSibling
element.nextElement Retorna el elemento siguiente al mismo nivel.
Sibling
ALBERT BASSONS 48
Métodos de element
Método Descripción
element.appendChild() Añade un nuevo hijo al elemento, como
nuevo hijo
element.cloneNode() Clona un elemento
element.compareDocumentPo Compara la posición entre dos elementos
sition()
element.normalize() Une nodos adyacentes de texto en uno solo
element.removeAttribute() Elimina un determinado atributo
element.removeAttributeNode Elimina un atributo nodo de un elemento y lo
() retorna
element.removeChild() Quita un nodo hijo del elemento
element.replaceChild() Reemplaza un nodo hijo del elemento
ALBERT BASSONS 49
Métodos de element
ALBERT BASSONS 50
Métodos de element
Método Descripción
element.getAttribute() Retorna el valor del atributo especificado
element.getAttributeNod Retorna el nodo atributo especificado
e()
element.getElementsByT Retorna un conjunto de nodos elemento del
agName() tipo especificado
element.toString() Convierte el elemento a cadena de texto
nodelist.item() Retorna el nodo en la posición indicada,
dentro de una lista de nodos.
ALBERT BASSONS 51
Métodos de element
Método Descripción
element.hasAttribute() Retorna si un elemento tiene o no el
atributo especificado.
element.hasAttributes() Retorna cierto si el elemento tiene algún
atributo
element.hasChildNodes() Retorna cierto si el elemento tiene hijos
ALBERT BASSONS 52
Métodos de element
Método Descripción
element.insertBefore() Inserta un nuevo hijo, antes del elemento
especificado
element.isDefaultNamespa Retorna true si el namespace indicado es el
ce() que hay por defecto
element.isEqualNode() Comprueba si dos elementos son iguales
element.isSameNode() Comprueba si dos elementos son el mismo
elemento
element.isSupported() Retorna cierto si la característica indicada es
soportada
element.setAttribute() Establece o cambia el atributo indicado al
valor deseado
element.setAttributeNode() Establece o cambia el nodo atributo
especificado
ALBERT BASSONS 53
Métodos de element
ALBERT BASSONS 54
Los nodos element
• Las propiedades y métodos descritos anteriormente, son
comunes para todos los tipos de elementos.
ALBERT BASSONS 55
Los nodos element
https://developer.mozilla.org/en-US/docs/DOM/DOM_Reference
ALBERT BASSONS 56
Los nodos element
ALBERT BASSONS 57
Truco
ALBERT BASSONS 58
Ejemplo (1 de 2)
ALBERT BASSONS 59
Ejemplo (2 de 2)
ALBERT BASSONS 60
Modificando estilos
ALBERT BASSONS 61
Ejemplo
ALBERT BASSONS 62
Enlaces de la W3Schools
• Estos son los enlaces de la W3Schools con los listados
actualizados de propiedades y métodos para los objetos de tipo
document, element y attribute node:
• Nodo document
http://www.w3schools.com/jsref/dom_obj_document.asp
• Nodo element
http://www.w3schools.com/jsref/dom_obj_all.asp
• Nodo atrribute
http://www.w3schools.com/jsref/dom_obj_attributes.asp
ALBERT BASSONS 63
Enlaces de la MDN
• Estos son los enlaces de la Mozilla Development Network:
• Node:
https://developer.mozilla.org/en-US/docs/Web/API/Node
• Nodo document:
https://developer.mozilla.org/en-US/docs/Web/API/document
• Nodo element:
https://developer.mozilla.org/en-US/docs/Web/API/Element
ALBERT BASSONS 64
Enlaces
• http://www.w3schools.com/jsref/dom_obj_style.asp
• https://developer.mozilla.org/es/docs/Web/API/HTMLElement/style
ALBERT BASSONS 65
Métodos importantes
ALBERT BASSONS 66
Métodos importantes
ALBERT BASSONS 67
Ejemplos
Experimentando con el DOM
Ejemplo 1
• Esta función borra de la página el elemento que le pasemos
como parámetro. Es compatible con Explorer.
ALBERT BASSONS 69
Ejemplo 2
ALBERT BASSONS 70
Ejemplo 3
ALBERT BASSONS 71
Ejemplo 4
ALBERT BASSONS 72
Ejemplo 5
ALBERT BASSONS 73
Ejercicios
DOM
Ejercicios
HACIENDO PRUEBAS:
ALBERT BASSONS 75
Ejercicios
1. Al pasar el ratón sobre un div con un
texto, aparece un nuevo div debajo que
nos dice que estás pasando el ratón.
ALBERT BASSONS 76
Ejercicios
ALBERT BASSONS 77
Ejercicios
3. Al hacer clic sobre un párrafo, dentro de un div con cinco
párrafos más, éste párrafo se borra pero los otros se mantienen.
ALBERT BASSONS 78
Ejercicios
4 – Crea la siguiente estructura HTML:
<div>
<h1>La cancion del pirata</h1>
<p>Con diez cañones por banda</p>
<p>viento en popa a toda vela</p>
<p>no corta el mar, sino vuela</p>
<p>un velero Bergantín</p>
</div>
ALBERT BASSONS 79
Ejercicios
5 - Al hacer clic sobre una imagen pequeña, se abre una
figura por encima (position: fixed) con la misma imagen
pero más grande.
ALBERT BASSONS 80
Ejercicios
ALBERT BASSONS 81
Ejercicios
6 – Crea una página con un botón y la imagen de un dado.
ALBERT BASSONS 82
Ejercicios
ALBERT BASSONS 83
Ejercicios
7 – Implementa un juego de dos dados para un solo jugador con las
siguientes normas:
ALBERT BASSONS 84
Ejercicios
• Si el jugador ha acertado, ganará
tantas monedas como haya
apostado, si falla las perderá, si
sale exactamente siete también
pierde.
ALBERT BASSONS 85
Ejercicios
ALBERT BASSONS 86
Ejercicios
8 – Crea una página con un listado de productos y una imagen de
un carrito de la compra en la parte superior.
ALBERT BASSONS 87
Ejercicios
ALBERT BASSONS 88