Ver Mensaje Individual
  #7 (permalink)  
Antiguo 10/07/2016, 14:00
Avatar de BramSt
BramSt
 
Fecha de Ingreso: abril-2015
Mensajes: 117
Antigüedad: 9 años
Puntos: 5
Respuesta: No entiendo bien el DOM

Cita:
Iniciado por IsaBelM Ver Mensaje
A ver, el problema es que al embeber o externalizar el .js, los elementos aún no existen
Ah vale, por eso imagino que me está petando al hacer (desde el .js externo)

Código Javascript:
Ver original
  1. var msg=document.getElementById("p1").childNodes[0].nodeValue;



Pero sigo sin entenderlo, tras leer los links que me has pasado.

A ver, se supone que primero se ejecuta el DOMContentLoaded (que carga el HTML) y después el load, ¿no? (que carga lo demás).

Si yo hago un archivo.js con esto:

Código Javascript:
Ver original
  1. function cargarLoDemas()
  2.         {
  3.            
  4.            
  5.             alert("cargar lo demás");
  6.        
  7.         }
  8.        
  9.        
  10.         window.addEventListener("load",cargarLoDemas);
  11.        
  12.             function cargarDocumentoHtml()
  13.         {
  14.        
  15.             alert("DOMContentLoaded, el HTML cargado");
  16.        
  17.        
  18.         }
  19.  
  20.         document.addEventListener("DOMContentLoaded",cargarDocumentoHtml);

Y mi código HTML tiene lo siguiente:

Código HTML:
Ver original
  1.     <head>
  2.    
  3.        
  4.  
  5.         <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  6.         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  7.         <html xmlns="http://www.w3.org/1999/xhtml" lang="es" xml:lang="es">
  8.  
  9.  
  10.         <script type="text/javascript" src="codigo.js"></script>
  11.        
  12.        
  13.     </head>
  14.    
  15.     <body>
  16.    
  17.        
  18.        
  19.         <p>Hola qué tal</p>
  20.         <div id="wrapper"><p id="p1">Bien</p></div><!--asas-->
  21.        
  22.         <script type="text/javascript" >
  23.        
  24.         var msg='';
  25.        
  26.         var msg=document.getElementById("p1").childNodes[0].nodeValue;
  27.        
  28.         alert(msg);
  29.        
  30.        
  31.         </script>
  32.     </body>
  33.    
  34.    
  35.    
  36. </html>

Primero se ejecuta lo que hay dentro del script que está en el body, y después el script que he externalizado en <head>.

No lo entiendo. Quizá sea que no es necesario llamar a los dos eventos, es decir, que ya son llamados cuando ejecuto el HTML de manera automática... pero es que aún en ese caso, sigo sin entender por qué no se me ejecuta la parte de código js que he puesto en el body si se me ocurre externalizarlo...

Por cierto, sigo utilizando el "alert()" porque el "console.log()" no me funciona...

Poco a poco me van quedando cosas claras, aunque por cada cosa que medio entiendo surgen tres dudas más... poco a poco XD

EDIT: Por cierto, una de las cosas por las que no me ejecutaba el .js anteriormente parece que era por la Codificación también.

Última edición por BramSt; 10/07/2016 a las 14:19