Foros del Web » Programando para Internet » Javascript »

El constructor de este objeto no me funciona! (ver código)

Estas en el tema de El constructor de este objeto no me funciona! (ver código) en el foro de Javascript en Foros del Web. El constructor no me funciona, o al menos no consiguo que funcione correctamente, en este código no consigo que el array que le paso como ...
  #1 (permalink)  
Antiguo 04/04/2012, 12:01
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 3 meses
Puntos: 30
Pregunta El constructor de este objeto no me funciona! (ver código)

El constructor no me funciona, o al menos no consiguo que funcione correctamente, en este código no consigo que el array que le paso como texto a imprimir acabe apareciendo en pantalla!


Código:


Código Javascript:
Ver original
  1. /*Definiendo la clase */
  2. var ClaseDePrueva = function (array1,array2){
  3.                /*contructor*/
  4.         this.texto1 = array1;  
  5.             this.NombreID = document.getElementById(array2);
  6.  
  7.               /* Metodo */
  8.               this.ImprimirTexto = function(){
  9.                 this.NombreID.innerHTML = this.texto1;
  10.         }
  11.  
  12.  
  13. }
  14.  
  15. /*Inicializo el objeto y le paso las variables para el constructor! */
  16. var ObjetoDePrueva = new ClaseDePrueva('ArrayDeprueva1' , 'Mydiv1');
Código HTML:
<div id="Mydiv1" onload="ObjetoDePrueva.ImprimirTexto()"></div> 

Última edición por Albuss; 04/04/2012 a las 12:08
  #2 (permalink)  
Antiguo 04/04/2012, 12:31
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 15 años, 8 meses
Puntos: 139
Respuesta: El constructor de este objeto no me funciona! (ver código)

El div no tiene evento de onLoad

Intenta con esto

Código Javascript:
Ver original
  1. /*Definiendo la clase */
  2. var ClaseDePrueva = function (array1,array2){
  3. /*contructor*/
  4.  this.texto1 = array1;
  5.  this.NombreID = document.getElementById(array2);
  6.  
  7.  /* Metodo */
  8. this.ImprimirTexto = function(){
  9.  this.NombreID.innerHTML = this.texto1;
  10. }
  11.  
  12.  
  13. }
  14.  
  15.  
  16. /*Inicializo el objeto y le paso las variables para el constructor! */
  17.  
  18. window.onload = function(){
  19. var ObjetoDePrueva = new ClaseDePrueva('ArrayDeprueva1' , 'Mydiv1');
  20. ObjetoDePrueva.ImprimirTexto();
  21. }
  #3 (permalink)  
Antiguo 04/04/2012, 13:36
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 3 meses
Puntos: 30
Respuesta: El constructor de este objeto no me funciona! (ver código)

En realidad el onload era en la etiqueta body, fallo mio, el problema es unicamente del constructor (estoy totalmente seguro) y quería saber que he hecho mal.
  #4 (permalink)  
Antiguo 04/04/2012, 13:42
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 15 años, 8 meses
Puntos: 139
Respuesta: El constructor de este objeto no me funciona! (ver código)

No le vi ningun error excepto lo del onLoad al div , de la forma que lo puse deberia funcionar.
  #5 (permalink)  
Antiguo 04/04/2012, 14:12
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 3 meses
Puntos: 30
Respuesta: El constructor de este objeto no me funciona! (ver código)

Ami el constructor no me funciona y sigo sin saber por que, de todos modos es la primera vez que me falla un costructor.
  #6 (permalink)  
Antiguo 04/04/2012, 14:33
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: El constructor de este objeto no me funciona! (ver código)

¡buenas!
¿en qué momento estás creando la instancia? fijate el ejemplo de @gix2, la instancia la crea en el evento onload. en tu caso tienes que crearla luego que el documento termine de cargar en el navegador para asegurarse que existe el elemento que tomas por ID.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #7 (permalink)  
Antiguo 04/04/2012, 14:49
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 3 meses
Puntos: 30
Respuesta: El constructor de este objeto no me funciona! (ver código)

En realidad instanciaba el objeto dentro de la hoja .js , peor he probado a hacerlo mediante un onload en el body y me da el mismo resultado
  #8 (permalink)  
Antiguo 04/04/2012, 16:06
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: El constructor de este objeto no me funciona! (ver código)

he copiado tal cual el ejemplo que muestra @gix2, y no veo donde falla. http://jsfiddle.net/xgvRu/
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #9 (permalink)  
Antiguo 05/04/2012, 17:24
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 3 meses
Puntos: 30
Exclamación Respuesta: El constructor de este objeto no me funciona! (ver código)

Vale,a vosotros os funciona por que estais declarando este escript en el head del archivo .html

Yo en cambio llamo mediante scr a un archivo externo .Js , y es cuando no me funciona! , he probado declarando todo dentro de la cabecera como vosotros y si me funciona, el problema viene cuando el codigo esta en un archivo .js externo y es llamado mediante src en el archivo .html


¿por que?
  #10 (permalink)  
Antiguo 05/04/2012, 17:30
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 15 años, 8 meses
Puntos: 139
Respuesta: El constructor de este objeto no me funciona! (ver código)

No importa de igual forma debe de funcionar!
verifica si esta apuntando bien al archivo externo.
  #11 (permalink)  
Antiguo 05/04/2012, 18:09
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 3 meses
Puntos: 30
Respuesta: El constructor de este objeto no me funciona! (ver código)

He reescrito todo el código unas 5 o 6 veces, no se que puede estar pasando, seguiré intentándolo.
  #12 (permalink)  
Antiguo 05/04/2012, 18:15
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: El constructor de este objeto no me funciona! (ver código)

revisa la consola del navegador para determinar si algo mal está ocurriendo. si no muestra ningún error, probablemente sea algún error logístico de tu parte. pero hasta el momento, todo parece estar bien. y el código aislado en un archivo *.js debería funcionar igual.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #13 (permalink)  
Antiguo 05/04/2012, 18:59
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 3 meses
Puntos: 30
Respuesta: El constructor de este objeto no me funciona! (ver código)

Me santa este error en la consola :

"TypeError: Cannot set property 'innerHTML' of null"
  #14 (permalink)  
Antiguo 05/04/2012, 19:08
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: El constructor de este objeto no me funciona! (ver código)

pues lo que sucede es que el script está intentado obtener un elemento que aún no existe en el documento. por tanto, cuando getElementById no encuentra el elemento devuelve null. entonces, como null es un valor primitivo que no tiene propiedades ni métodos, devuelve error al tratarlo como un objeto. fíjate en los ejemplos corregidos que la instancia se crea cuando el navegador ha terminado de cargar el documento, evento onload.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #15 (permalink)  
Antiguo 05/04/2012, 19:21
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 3 meses
Puntos: 30
Exclamación Respuesta: El constructor de este objeto no me funciona! (ver código)

Pero la id que le paso EXISTE! , y lo he comprabado infinidad de veces! , este tipo de situaciones me dejan K.O

Pero aun se pone la cosa mas negra!, he rehecho todo el codigo otra vez, y ahora cuando en la consola de Chrome le meto la llamada al metodo de clase me sale:

"Undefined" ¿? :X


Bueno , agradezco la atencion que me habeis prestado, lo que voy a ahcer es pasar a otra cosa y retomar esto dentro de un par de dias.

Última edición por Albuss; 05/04/2012 a las 19:27
  #16 (permalink)  
Antiguo 05/04/2012, 19:43
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: El constructor de este objeto no me funciona! (ver código)

no importa si la ID existe en tu código html. lo que sucede es que el navegador analiza el código html de forma líneal y va construyendo el DOM. cuando el navegador se encuentra con un elemento SCRIPT este le pasa el mando de procesamiento al motor de scripting. si el código javascript intenta acceder al DOM, este sólo podrá trabajar con lo que el navegador haya construido hasta el momento. fíjate el siguiente código y revisa lo que escribe en la consola.

Código:
<script>console.log('antes del elemento: ', document.getElementById('grabme'));</script>
<p id="grabme">elemento con ID "grabme"</p>
<script>console.log('despues del elemento: ', document.getElementById('grabme'));</script>
introducir el código directamente en la consola te funciona porque ya el navegador ha creado el DOM.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #17 (permalink)  
Antiguo 05/04/2012, 19:47
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 3 meses
Puntos: 30
Respuesta: El constructor de este objeto no me funciona! (ver código)

Pero ese elemento script es un src al que llamo en el head, es un archivo .js . No es un elemento script en el body.
  #18 (permalink)  
Antiguo 05/04/2012, 20:03
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: El constructor de este objeto no me funciona! (ver código)

esto deberia funcionarte.

Código:
<!-- documento html -->
<html><head><script type="text/javascript" src="script.js"></script></head>
<body><p id="grabme">Grab me</p></body></html>
Código:
// documento script.js
self.onload = function(){
alert(document.getElementById('grabme').innerHTML);
};
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #19 (permalink)  
Antiguo 05/04/2012, 21:51
Avatar de elarrieux  
Fecha de Ingreso: abril-2012
Ubicación: Uruguay
Mensajes: 67
Antigüedad: 12 años
Puntos: 26
Respuesta: El constructor de este objeto no me funciona! (ver código)

Hola!

Concuerdo con los colegas, prueba utilizando jquery:

Código:
   <script src="jquery-1.7.1.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function () {
//pon aqui tu codigo...
        });
    </script>
De esta forma tu codigo se ejecutara una vez que se haya cargado el DOM.

Sds.
  #20 (permalink)  
Antiguo 05/04/2012, 22:42
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 3 meses
Puntos: 30
Respuesta: El constructor de este objeto no me funciona! (ver código)

Lo siento, intente aprender y comprender Jquery, pero no es algo que le vea pracmatismo, no es para mi, creo que es como utilizar java cuando tienes que utilizar C++ simplemente por que es mas "facil"
  #21 (permalink)  
Antiguo 05/04/2012, 22:43
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 3 meses
Puntos: 30
Respuesta: El constructor de este objeto no me funciona! (ver código)

Cita:
Iniciado por zerokilled Ver Mensaje
esto deberia funcionarte.

Código:
<!-- documento html -->
<html><head><script type="text/javascript" src="script.js"></script></head>
<body><p id="grabme">Grab me</p></body></html>
Código:
// documento script.js
self.onload = function(){
alert(document.getElementById('grabme').innerHTML);
};

Si, me sale la ventana de alert
  #22 (permalink)  
Antiguo 05/04/2012, 23:12
Avatar de elarrieux  
Fecha de Ingreso: abril-2012
Ubicación: Uruguay
Mensajes: 67
Antigüedad: 12 años
Puntos: 26
Respuesta: El constructor de este objeto no me funciona! (ver código)

Cita:
Iniciado por Albuss Ver Mensaje
Lo siento, intente aprender y comprender Jquery, pero no es algo que le vea pracmatismo, no es para mi, creo que es como utilizar java cuando tienes que utilizar C++ simplemente por que es mas "facil"
Mire que vale la pena aprenderlo.

Si ud. tuviera que escribir su propia funcion ready() le tomaria muchisimo mas de 100 lineas de codigo.

Puede utilizar tambien el onLoad que le sugirio zerokilled pero tenga en cuenta que no funciona en todos los navegadores de la misma forma.

Sds.

Etiquetas: clase, constructor, object
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:45.