JAVASCRIPT CREATEELEMENT, CREATETEXTNODE, APPENDCHILD. MODIFICAR PROPIEDAD ONCLICK CON JAVASCRIPT (CU01140E)

Documentos relacionados
QUERYSELECTORALL JAVASCRIPT Y QUERYSELECTOR. ACCEDER A ELEMENTOS POR SELECTORES CSS. EJEMPLOS (CU01134E)

JAVASCRIPT: ACCEDER A ELEMENTOS POR ID. GETELEMENTBYID. DOCUMENT.ALL. CAMBIAR IMAGEN IMG SRC (CU01127E)

FOR JAVASCRIPT (BUCLES) CONOCER TAMAÑO DE UN ARRAY CON LENGTH. BREAK PARA DETENER EJECUCIÓN. EJEMPLOS Y EJERCICIOS (CU01131E)

WHILE JAVASCRIPT. DO WHILE. CONTINUE PARA SALTAR BUCLE. BUCLES CON LABEL (ETIQUETA O NOMBRE). EJEMPLOS (CU01132E)

EFECTOS JAVASCRIPT VISUALES, DE IMÁGENES, TEXTO... RECURSIÓN. SETTIMEOUT NO FUNCIONA EN BUCLES FOR, WHILE,? (CU01166E)

NODELIST JAVASCRIPT. DIFERENCIAR NODELIST Y ARRAY. ACCEDER AL TEXTO DE NODOS CON TEXTCONTENT, INNERTEXT (CU01136E)

EJEMPLOS JAVASCRIPT OPERADORES INCREMENTO Y DECREMENTO. ASIGNACIÓN Y ASIGNACIÓN COMPUESTA. (CU01118E)

CREAR OBJETOS JAVASCRIPT CON THIS Y NEW. EJEMPLOS PARA ENTENDER QUÉ SON LOS OBJETOS Y PARA QUÉ SIRVEN. (CU01143E)

IF ELSE, IF ELSE IF JAVASCRIPT. CONDICIONALES DEL FLUJO O ESTRUCTURAS DE DECISIÓN. EJEMPLOS. EJERCICIOS. (CU01119E)

FUNCIÓN EVAL JAVASCRIPT. GETELEMENTSBY CLASSNAME. EJEMPLO CÓDIGO CALCULADORA SIMPLE (CU01133E)

IMAGE JAVASCRIPT. NEW IMAGE. COMPLETE, NATURALWIDTH. OBTENER TODAS LAS IMÁGENES DE UNA WEB CON DOCUMENT.IMAGES (CU01186E)

ADDEVENTLISTENER JAVASCRIPT. REMOVE. ATTACHEVENT. THIS EN EVENTOS. PROPAGACIÓN. BUBBLING. CAPTURA. (CU01158E)

HTMLELEMENT JAVASCRIPT. MÉTODOS FOCUS, BLUR. SUBMIT FORMULARIOS: DETENER ENVÍO. ONSUBMIT RETURN. EJEMPLOS. (CU01181E)

SWITCH JAVASCRIPT. SELECCIÓN ENTRE ALTERNATIVAS. DIAGRAMA DE FLUJO Y EJEMPLO DE APLICACIÓN. (CU01120E)

CLOSURES JAVASCRIPT. EJEMPLOS. CONCEPTO: QUÉ SON Y PARA QUÉ SIRVEN. RETARDO DE EJECUCIÓN CON SETTIMEOUT Y CLOSURES. (CU01169E)

CONSTRUCTORES JAVASCRIPT. CREAR OBJETOS VACÍOS. AÑADIR PROPIEDADES Y MÉTODOS. OBJETOS ÚNICOS O SINGLETON. EJEMPLOS (CU01145E)

JAVASCRIPT VALIDAR CAMPO TEXTO NO VACÍO. QUE VALOR SEA NUMÉRICO. O CORREO ELECTRÓNICO EN FORMULARIOS. EJEMPLOS (CU01182E)

ACCEDER A NODOS HIJOS JAVASCRIPT Y SUS ATRIBUTOS. NODENAME, NODETYPE Y NODEVALUE O TEXTO DEL NODO. EJEMPLOS (CU01126E)

FUNCIONES JAVASCRIPT PARA CADENAS DE TEXTO: TOUPPERCASE, TOLOWERCASE, CHARAT, SUBSTRING, SLICE, INDEXOF, SPLIT, REPLACE, REPLACEALL.

FORMULARIOS JAVASCRIPT: EJEMPLOS DE DOCUMENT.FORMS Y ELEMENTS. ACCESO DIRECTO A FORMULARIOS Y CAMPOS CON ID Y NAME (CU01175E)

STATIC JAVASCRIPT. PROPIEDADES Y MÉTODOS ESTÁTICOS O DE CLASE. EJERCICIO. CÓDIGO EJEMPLOS BÁSICOS (CU01148E)

EFECTO CSS DE ESQUINAS REDONDEADAS: BORDER- RADIUS. BORDER-LEFT- TOP-RADIUS. EJEMPLOS CIRCULO O ELIPSE (CU01058D)

OPERADOR CONDICIONAL TERNARIO TIPO IF CON INTERROGACIÓN (JAVASCRIPT, JAVA, ETC.) Y DOS PUNTOS. EJEMPLOS (CU01152E)

QUÉ SIGNIFICA JAVASCRIPT VOID (0) Y JAVASCRIPT: EN HREF? QUÉ DIFERENCIA RETURN FALSE Y PREVENTDEFAULT? (CU01184E)

Z-INDEX CSS NO FUNCIONA? CONTROL DE SUPERPOSICIÓN DE ELEMENTOS COMO CAPAS, DIV O IMÁGENES (CU01039D)

CSS EFECTO SOMBRA CON TEXT-SHADOW Y BLUR, TEXT-OVERFLOW CLIP, ELLIPSIS Y LINE-HEIGHT (INTERLINEADO) (CU01041D)

COLUMNAS CSS: COLUMN-COUNT, COLUMN-WIDTH, COLUMNS, COLUM-GAP Y COLUM-RULE. EJEMPLOS PRÁCTICOS (CU01057D)

ESTILOS Y HERENCIA EN TABLAS CSS. WIDTH, HEIGHT, FONT-SIZE Y OVERFLOW EN TABLAS. PROPIEDAD BORDER- COLLAPSE (CU01051D)

DEGRADADOS CSS. EFECTO LINEAL Y RADIAL. LINEAR-GRADIENT. ANGULOS CSS: UNIDADES ANGULARES DEG, GRAD, TURN, RAD. (CU01060D)

PROPIEDADES VISIBILITY (VISIBLE, HIDDEN, COLLAPSE) Y OVERFLOW CSS. SCROLL. OVERFLOW- X Y OVERFLOW-Y. EJEMPLOS (CU01038D)

SETATTRIBUTE Y GETATTRIBUTE JAVASCRIPT. DIFERENCIAS DE SINTAXIS PROPIEDADES CON HTML. EJEMPLO MAXLENGTH. (CU01176E)

DOM O DOCUMENT OBJECT MODEL JAVASCRIPT. QUÉ ES? PARA QUÉ SIRVE? EL W3C. ARBOL DE NODOS. PARENT Y CHILD. EJEMPLOS (CU01123E)

QUÉ ES CSS? HTML, CONOCIMIENTO PREVIO PARA PODER APRENDER CSS DESDE CERO (CU01003D)

DISEÑO WEB CSS CON DOS, TRES O MÁS COLUMNAS CON FLOAT. WIDTH EN PORCENTAJES NO FUNCIONA? TIPOS DE ANCHO. EJEMPLOS. (CU01036D)

VARIABLES STRING JAVASCRIPT. DEBEN USARSE COMILLAS SIMPLES O DOBLES? CARACTERES DE ESCAPE \N \T.LENGTH (CU01114E)

SELECTOR DE CLASES CSS: CLASS. APLICAR ESTILOS CSS EN DISTINTOS LUGARES DE UNA WEB. EJEMPLOS. (CU01012D)

ERROR, THROW Y TRY CATCH JAVASCRIPT. MESSAGE, FILENAME, LINENUMBER. EVAL Y RANGEERROR, REFERENCE ERROR. EJEMPLOS (CU01187E)

CAPTURAR EVENTOS DE TECLADO JAVASCRIPT. TECLA PULSADA. FROMCHARCODE. KEYCODE, WICH. (CU01161E)

PROTOTYPE JAVASCRIPT. EJEMPLOS DE PROTOTIPOS Y HERENCIA. CÓMO USARLOS. SINTAXIS. EFICIENCIA. (CU01147E)

ARCHIVOS DE EXTENSIÓN JS. INCLUIR JAVASCRIPT EN WEBS REFERENCIANDO UN ARCHIVO EXTERNO CON SRC (CU01110E)

JAVASCRIPT HOISTING. ERRORES FRECUENTES DE PROGRAMADORES Y CONSEJOS. PROBLEMAS PRECISIÓN DECIMAL (CU01190E)

TIPOS DE DATOS EN JAVASCRIPT. TIPOS PRIMITIVOS Y OBJETO. SIGNIFICADO DE UNDEFINED, NULL, NAN (CU01112E)

OBJETO WINDOW JAVASCRIPT. PROPIEDADES: NAME, INNERWIDTH, LENGTH,, OPENER, OUTERHEIGHT, PAGEXOFFSET, SCREENX (CU01173E)

DE LA ESTRUCTURA HTML Y SU SEMÁNTICA AL MODELO DE CAJAS CSS. ELEMENTOS BLOCK Y ELEMENTOS INLINE (CU01008D)

API DRAG AND DROP HTML Y JAVASCRIPT. EVENTOS. EFECTOS. DATATRANSFER. EJEMPLOS. ARRASTRAR Y SOLTAR. (CU01196E)

DISABLED JAVASCRIPT EN INPUT TEXT, SUBMIT, BUTTON, SELECT, LINK, STYLE... IMPEDIR ENVÍO DUPLICADO FORM. DESACTIVAR CSS (CU01183E)

EVENTOS JAVASCRIPT. TIPOS. PROPAGACIÓN. MODELOS. MANEJADOR O EVENT HANDLER. CONFIRM. EJEMPLO. (CU01157E)

LÍNEAS SEPARADORAS. ETIQUETA <HR>. COMENTARIOS EN HTML. ATRIBUTOS SIZE, WIDTH, NOSHADE (DEPRECATED). EJEMPLOS (CU00716B)

EJEMPLO RELOJ JAVASCRIPT. SETTIMEOUT, CLEARTIMEOUT, SETINTERVAL, REQUEST ANIMATIONFRAME. (CU01164E)

PARÉNTESIS EN EXPRESIONES REGULARES JAVASCRIPT. FLAGS. MÉTODOS EXEC, TEST, MATCH, SEARCH, REPLACE, SPLIT. EJEMPLOS (CU01155E)

DIFERENCIAS ENTRE NAVEGADORES EN RESPUESTAS A JAVASCRIPT (FIREFOX, EXPLORER, CHROME, SAFARI ). JAVASCRIPT EN LÍNEA. (CU01108E)

ANIMACIONES CSS. TRANSITION-PROPERTY, TRANSITION-DURATION, TRANSITION-TIMING- FUNCTION Y TRANSITION- DELAY. EJEMPLOS. (CU01063D)

FUNCIONES ARRAYS JAVASCRIPT. PUSH, SORT (ORDENAR NÚMEROS), CONCAT, JOIN, POP, SHIFT, SLICE, SPLICE. (CU01153E)

PROPIEDAD DISPLAY CSS. INLINE, BLOCK, NONE, LIST-ITEM, INLINE-BLOCK. EJERCICIOS DE EJEMPLO RESUELTOS EN CÓDIGO CSS (CU01033D)

CSS VERTICAL-ALIGN MIDDLE NO FUNCIONA? CENTRAR VERTICALMENTE UNA IMAGEN, TEXTO, DIV, ETC. EJEMPLOS (CU01043D)

FUNCIONES MANEJADORAS DE EVENTOS Y ADDEVENTLISTENER CON PARÁMETROS. THIS.STYLE IS UNDEFINED (CU01177E)

CONCEPTO DE HERENCIA EN HOJAS DE ESTILO EN CASCADA CSS. QUÉ ES? FORZAR HERENCIA CON INHERIT. EJEMPLOS. (CU01013D)

ENVÍO DE DATOS DE UN FORMULARIO CON PHP. MÉTODOS GET Y POST. EJEMPLOS Y EJERCICIOS RESUELTOS. (CU00832B)

EFECTO SOMBRA CSS CON BOX-SHADOW. SOMBRA INTERIOR INSET. BLUR O DIFUMINADO, SPREAD. EJEMPLOS Y EJERCICIOS RESUELTOS (CU01059D)

THIS JAVASCRIPT: SIGNIFICADOS. AMBITOS (SCOPE). ANIDAMIENTO. NAMESPACES. EJEMPLO EJERCICIO RESUELTO. (CU01168E)

DEFINICIÓN DE FONDO CSS. BACKGROUND- IMAGE Y EFECTO FONDO PÁGINA CON PAPEL TAPIZ. BACKGROUND-REPEAT. EJEMPLOS (CU01030D)

API CANVAS HTML Y JAVASCRIPT. EJEMPLOS. DIBUJAR CÍRCULOS, FORMAS, GRÁFICOS, ANIMACIONES, JUEGOS, ETC. (CU01195E)

Tema 3, parte 5. Estilos dinámicos. Texto. Cambio de estilos. Animaciones.

EXPRESIONES REGULARES JAVASCRIPT. REGEX. NEW. CARÁCTER ESPECIAL. NÚMERO, LETRA, ESPACIO BLANCO. (CU01154E)

PADDING Y MARGIN CSS. TOP, RIGHT, BOTTOM Y LEFT. MARGIN NEGATIVO Y CENTRAR CON MARGIN AUTO. EJEMPLOS (CU01029D)

ARRAYS ASOCIATIVOS JAVASCRIPT? MAPS? RECORRER PROPIEDADES DE OBJETOS CON FOR IN. EJEMPLOS EJERCICIOS RESUELTOS. (CU01146E)

ANIMATION CSS. NAME, DURATION, DELAY, FILL- MODE, ITERATION- COUNT, DIRECTION, TIMING-FUNCTION, PLAY- STATE. EJEMPLOS (CU01065D)

EFECTOS CSS. BORDES, MÁRGENES, FUENTES, ANIMACIONES DÓNDE ESTÁ LA FRONTERA ENTRE CSS, HTML Y PROGRAMACIÓN? (CU01005D)

CONCEPTO FLOAT CSS. NONE, LEFT, RIGHT Y CENTRAR?. COLOCAR TEXTO ALREDEDOR DE UNA IMAGEN. EJEMPLOS DE POSICIONAMIENTO FLOTANTE (CU01034D)

REDIRECCIONAR Y RECARGAR WEBS CON JAVASCRIPT. WINDOW.LOCATION. HREF, HOSTNAME, ASSIGN, RELOAD, REPLACE. (CU01171E)

TEXT-ALIGN, COLOR, TEXT- DECORATION, TEXT- INDENT, WHITE-SPACE NOWRAP, PRE, PRE- WRAP, PRE-LINE O NORMAL (CU01040D)

HERENCIA JAVASCRIPT: EJEMPLO CON CÓDIGO BÁSICO. JERARQUÍA DE CLASES EN CADENA DE PROTOTIPOS. (CU01149E)

ENCABEZADOS HTML <h1> A <h6>, PÁRRAFOS <p>, APLICAR ESTILOS Y ETIQUETA <pre> DE TEXTO PREFORMATEADO. EJEMPLOS (CU00715B)

MENÚ DESPLEGABLE CSS HORIZONTAL. EFECTO DROPDOWN CON ITEMS Y SUBITEMS. USO DE FLOAT, DISPLAY, POSITION EJEMPLO DE CÓDIGO.

FUNCIONES JAVASCRIPT. CONCEPTO. PARÁMETROS O ARGUMENTOS Y TIPOS. PASO POR VALOR. RETURN. EJEMPLOS. (CU01122E)

GUÍA DE ESTILO JAVASCRIPT PARA COMENTARIOS DE ETC. EJEMPLOS (CU01192E)

FORMULARIOS EN HTML. OPCIONES. CASILLAS DE VERIFICACIÓN CHECKBOX. BOTONES DE RADIO. LISTAS DE OPCIONES SELECT, OPTGROUP, OPTION.

CSS BACKGROUND- POSITION, BACKGROUND- ATTACHMENT, BACKGROUND-CLIP, ORIGIN Y SIZE. SHORTAND BACKGROUND. EJEMPLOS (CU01031D)

REQUEST EN PHP. DIFERENCIAS Y VENTAJAS E INCONVENIENTES ENTRE GET, POST Y REQUEST. EJERCICIOS RESUELTOS Y EJEMPLOS. (CU00835B)

Introducción al desarrollo web (idesweb) - 3 a ed.

DOM : MODELO DE OBJETOS DEL DOCUMENTO. Árbol de nodos

DISEÑOS DE TABLAS CSS. BORDER-SPACING, CAPTION-SIDE, EMPTY- CELLS. COLORES DE FILAS INTERCALADOS ALTERNOS (CU01052D)

CONCEPTOS DE MARGEN Y RELLENO CSS. DIFERENCIAS ENTRE MARGIN Y PADDING CSS CON EL BOX MODEL. EJEMPLOS (CU01028D)

Introducción al desarrollo web (idesweb)

JERARQUÍA DE OBJETOS JAVASCRIPT. FORMS, ELEMENTS, IMAGES, LINKS. NAVIGATOR: USERAGENT, GEOLOCATION, ONLINE. (CU01170E)

Tutorial de enlace entre Formulario Web y Servicio Web REST. Programación en Internet

FORMULARIOS HTML. BOTONES: ENVÍO SUBMIT, RESTABLECIMIENTO RESET, IMAGEN Y CONTENIDO (BUTTON). (CU00724B)

SELECTORES CSS: ID. APLICAR CSS A PARTES DE UNA PÁGINA WEB. EJEMPLOS. DIFERENCIAR POR ETIQUETAS HTML EN IDS. (CU01011D)

MENÚS HORIZONTALES CSS Y MENÚS VERTICALES. CREAR MENÚS CON EFECTOS A PARTIR DE LISTAS CSS. CÓDIGO DE EJEMPLOS. (CU01049D)

TIPOS BÁSICOS DE ESTILOS CSS: ESTILOS POR DEFECTO Y CSS EN LÍNEA. SOBREESCRITURA DE ESTILOS. (CU01009D)

AJAX: EJEMPLO BÁSICO CÓDIGO OBJETO XMLHTTPREQUEST Y RECUPERAR DATOS DESDE ARCHIVO (CU01206F)

Acceso al DOM. Cualquier cosa que pueda guardarse en una variable: desde simples datos hasta elementos complejos (arrays, funciones, fechas, etc.

DEPURAR JAVASCRIPT. CONSOLE.LOG. DEBUG DE ERRORES CON FIREFOX (FIREBUG), CHROME, INTERNET EXPLORER. IDES. (CU01151E)

QUÉ ES Y PARA QUÉ SIRVE EL LENGUAJE CSS (CASCADING STYLE SHEETS HOJAS DE ESTILOS EN CASCADA)? (DV00203A)

Desarrollo de Aplicaciones Web con PHP. Javier Enciso

PROPIEDADES CSS WIDTH Y HEIGHT. VALOR POR DEFECTO AUTO (AUTOMÁTICO) EJEMPLOS PRÁCTICOS Y EJERCICIOS RESUELTOS (CU01025D)

FUNDAMENTOS DE ROBÓTICA. Maestro: Ing. Marco Antonio López Paredes REPORTE DE PROGRAMA: ANALIZAR LOS OBSTACULOS DE ROBOTS EN UN TABLERO

API GEOLOCATION Y API GOOGLE MAPS JAVASCRIPT. EJEMPLOS. INSERTAR MAPAS INTERACTIVOS, SATÉLITE, ETC. EN WEBS. EFECTOS. (CU01197E)

EMPEZAR A USAR CSS A PARTIR DE UN DOCUMENTO HTML CON UNA ESTRUCTURA BÁSICA CON TÍTULOS, LISTAS, ETC. (CU01007D)

Transcripción:

APRENDERAPROGRAMAR.COM JAVASCRIPT CREATEELEMENT, CREATETEXTNODE, APPENDCHILD. MODIFICAR PROPIEDAD ONCLICK CON JAVASCRIPT (CU01140E) Sección: Cursos Categoría: Tutorial básico del programador web: JavaScript desde cero Fecha revisión: 2029 Resumen: Entrega nº40 del Tutorial básico JavaScript desde cero. Autor: César Krall

CREAR NODOS DEL DOM Hasta ahora hemos visto cómo acceder a nodos del DOM y modificar sus propiedades. Es posible crear nodos y añadirlos en puntos específicos del árbol del DOM? Sí, esto es posible gracias a métodos disponibles para el objeto document de JavaScript. CREAR UN NODO Un nodo de tipo Element se crea invocando el método createelement del JavaScript. La sintaxis a emplear normalmentee es de este tipo: objeto document de var nuevonodo = document.createelement('tagelegido'); Donde tagelegido representa el tipo de nodo que vamos a crear indicando su correspondiente etiqueta HTML. Por ejemplo var nuevonodo = document.createelement('div'); crea un nodo <div> </ /div>. Un nodo de tipo Text se crea invocando el método createtextnode del objeto document de JavaScript. La sintaxiss a emplear normalmente es de este tipo: var nodotexto = document.createtextnode('texto contenido en el nodo'); Donde 'texto contenido en el nodo' indica el texto que queremos insertar. Normalmente tendremos que crear la dependencia en el árbol del DOM por el cual un nodo creado deberá definirse como hijo de un nodo ya existente. Es la forma de que un nodo creado se integre dentro de nuestra página web. La sintaxis a emplear normalmente es de este tipo: nombrenodopadre..appendchild(nombrenodohijo);

Escribe este código, guárdalo como archivo html y comprueba sus resultados en tu navegador: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/tr/html4/loose.dtd"> <html> <head> <title>curso JavaScript aprenderaprogramar.com</title> <meta charset="utf-8"> <style type="text/css"> body {font-family: sans-serif; text-align:center; div {border-style:solid;margin: 30px; padding:25px; display:inline-block; div div {background-color: yellow; </style> <script type="text/javascript"> var contador = 1 function crearnodohijo(nodopadre) { var nodohijo = document.createelement("div"); var nodotexto = document.createtextnode("soy el nodo hijo "+contador); nodohijo.appendchild(nodotexto); nodopadre.appendchild(nodohijo); contador = contador +1; </script> </head> <body> <div id="nodoraiz" onclick="crearnodohijo(this)"> Contenido inicial es este texto </div> </body> </html> El resultado esperado es que cada vez que se hace click dentro del div principal, se añade un nuevo div de forma que por cada pulsación van apareciendo nuevos recuadros donde se indica Soy el nodo hijo 1, Soy el nodo hijo 2, Soy el nodo hijo 3, etc. En este ejemplo, la pulsación en cualquier parte interior al div inicial (estemos o no dentro de un div hijo) genera el evento por el cual se crea un hijo. MODIFICAR LA PROPIEDAD ONCLICK CON JAVASCRIPT En este otro ejemplo vemos cómo podemos crear un div interno a aquel div en que se hace click. Para ello, hemos de establecer la propiedad onclick del nodo creado. La sintaxis a emplear para ello es esta: nombredenodo.onclick = function() {nombredefuncion(param1, param2,, paramn); nombredefuncion indica la función que debe ejecutarse como respuesta al evento onclick. Param1, param2,, paramn indica los parámetros que se le pasan a la función (en caso de no existir parámetros simplemente se abrirán y cerrarán paréntesis).

Escribe este código, guárdalo como archivo html y comprueba sus resultados en tu navegador: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/tr/html4/loose.dtd"> <html> <head> <title>curso JavaScript aprenderaprogramar.com</title> <meta charset="utf-8"> <style type="text/css"> body {font-family: sans-serif; text-align:center; div {border-style:solid;margin: 20px; padding:15px; display:inline-block; </style> <script type="text/javascript"> var contador = 1; function crearnodohijo(nodopadre) { if (nodopadre.children.length == 0) { var nodohijo = document.createelement("div"); nodohijo.id ='divelementid'+contador; nodohijo.onclick = function() {crearnodohijo(this); nodohijo.innerhtml = ''+contador; if (contador%2 == 0) {nodohijo.style.backgroundcolor = '#E9967A'; else {nodohijo.style.backgroundcolor = 'yellow'; nodopadre.appendchild(nodohijo); contador = contador +1; </script> </head> <body> <div id="nodoraiz" onclick="crearnodohijo(this)" style="background-color:#e6e6fa"> Contenido inicial </div> </body> </html> Merece la pena detenernos en la línea nodohijo.onclick = function() {crearnodohijo(this); Para establecer el valor del atributo onclick de un nodo, hemos de definir una función para ser ejecutada. Esto se hace con la sintaxis que hemos indicado. No es válido nodohijo.onclick = 'crearnodohijo(this) '; porque equivale a asignar un texto, ni nodohijo.onclick = crearnodohijo(this); porque aquí estaríamos asignando a la propiedad el hipotético resultado (obtenido con return) de ejecutar la función crearnodohijo. El resultado esperado es que cada vez que hacemos click en el div más interno entro todos los existentes, se genere un nuevo div, y que los colores se vayan alternando entre color amarillo y un color salmón. El evento onclick se genera para todos los div existentes (ya que el más interno está contenido dentro de todos ellos). Es decir, suponiendo que tengamos por ejemplo tres div uno externo, otro intermedio y otro interno, al pulsar encima del div interno se generan tres eventos onclick, uno para cada div. No obstante, en nuestro ejemplo sólo generamos un nodo hijo si el nodo que recibe el click no tiene hijos. De este modo, no se generan nuevos hijos excepto para el div más interno, que es el único que no tiene hijos, mientras que los div más externos no sufren cambios.

Gráficamente, el resultado esperado es que se vayan generando sucesivos recuadros internos a medida que se pulsa en el recuadro central. Podríamos determinar usando JavaScript en qué div exactamente se está haciendo click sin tener que basarnos en el número de hijos que tenga? Sí, esto está relacionado con la captura de eventos y lo estudiaremos más adelante. EJERCICIO Crea una página web donde inicialmente exista un div con borde solid y ancho delimitado con el texto Curso JavaScript aprenderaprogramar.com. Debajo del div deben mostrarse dos botones o pulsadores. Un botón debe indicar Añadir al final y otro Anidar. Cuando se pulse el botón Añadir al final, debe añadirse un div al final de la página con el texto Nodo creado 1 (o Nodo creado 2, 3, 4 según corresponda). Cuando se pulse el botón Anidar debe añadirse un div dentro del div inicial con el texto Nodo creado 5 (o Nodo creado 6, 7, 8 según corresponda). La numeración será única, es decir, podremos saber en qué orden han sido creados los div estén dentro o fuera del div inicial. Para comprobar si tus respuestas y código son aprenderaprogramar..com. correctos puedes consultar en los foros Próxima entrega: CU01141E Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la dirección siguiente: http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=78& &Itemid=206