Foros del Web » Programando para Internet » Javascript »

Clase para crear un objeto DOM?

Estas en el tema de Clase para crear un objeto DOM? en el foro de Javascript en Foros del Web. Muy buenas a todos! llevo un tiempo leyendo posts de este foro tan útil y ha llegado el momento de formular mi primera pregunta para ...
  #1 (permalink)  
Antiguo 16/12/2010, 08:30
 
Fecha de Ingreso: diciembre-2010
Mensajes: 1
Antigüedad: 13 años, 4 meses
Puntos: 0
Pregunta Clase para crear un objeto DOM?

Muy buenas a todos! llevo un tiempo leyendo posts de este foro tan útil y ha llegado el momento de formular mi primera pregunta para la cual no he encontrado respuesta ni pistas por ningún sitio, ahí va.

Existe alguna forma o método para crear un objeto del DOM que no sea el típico document.createElement() ?

Mi intención es hacer una clase con la que pueda crear un objeto DOM con sus métodos y demás, hago un mockup de lo que sería, pero que no funciona.

Código Javascript:
Ver original
  1. function __div() {
  2.   //éste atributo me lo he sacado de la manga,
  3.   //pero es lo que pretendo conseguir y no hay manera
  4.   this.nodeType = "div";
  5.   this.onclick = function() {
  6.     alert("clic!");
  7.   }
  8. }
  9.  
  10. // Y luego hacer tranquilamente un:
  11. var div = new __div();

Pero no hay suerte

Lo que sí he conseguido que funcione pero que no es exactamente lo que quiero es lo siguiente.

Código Javascript:
Ver original
  1. function __nuevo_div() {
  2.   var div = document.createElement("div");
  3.   div.onclick = function() {
  4.     alert("clic!");
  5.   }
  6.  
  7.   return div;
  8. }
  9.  
  10. var div = __nuevo_div();

Además de esto también quería preguntar otra cosilla. "Es legal" construir métodos para los objetos del DOM, además de los que tienen ya de forma innata? sé que se puede pero no sé si es estándar. Ejemplo:

Código Javascript:
Ver original
  1. function __nuevo_div() {
  2.   var div = document.createElement("div");
  3.   div.mensaje = "clic!";
  4.   div.alerta = function() {
  5.     alert(this.mensaje);
  6.   }
  7.   div.onclick = function() {
  8.     this.alerta();
  9.   }
  10.  
  11.   return div;
  12. }
  13.  
  14. var div = __nuevo_div();

Qué opinais? Contestadme con lo que sea, aunque sea para decirme que lo estoy haciendo mal y que me olvide de las "pseudoclases" para estos menesteres, así ya no seguiré comiéndome la cabeza.

A ver si ahora que me he animado a registrarme (y el trabajo me lo permita) me pongo y ayudo al resto de los usuarios.

Muchas gracias!

P.D.: Por supuesto después de cada función aplico un:

Código Javascript:
Ver original
  1. document.body.appendChild(div);

Y es ahí donde me da el error en el primer caso.

Última edición por nanchet; 16/12/2010 a las 08:39
  #2 (permalink)  
Antiguo 16/12/2010, 09:51
Avatar de stock  
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 19 años, 10 meses
Puntos: 53
Respuesta: Clase para crear un objeto DOM?

Hola nanchet.

Ok, a mi punto de vista vas por buen camino, intentando automatizar y abstraer el trabajo sucio que supone trabajar con el DOM, hace tiempo hice un pequeño framework para el concurso que hubo de JavaScript aquí mismo en FDW, te comento como lo hice para que te des una idea.


En primer lugar hice una clase que se llamaba "Element", esta clase era responsable de crear cualquier elemento de y contenía varios metodos para agregarle eventos, estilos, clases de CSS, etc, de manera sencilla! el código del Element era algo así:

Código Javascript:
Ver original
  1. var Element = function(el){
  2.       this.el = document.getElementById(el); //esto lo puedes hacer más inteligente
  3.       //inclusive crear el elemento si no existe en el DOM
  4. }
  5.  
  6. Element.prototype = {
  7.    addClass : function(klass){
  8.        
  9.    },
  10.  
  11.    addListener : function(type,callback,scope){
  12.            this.el.addEventListener(type,callback,false);  //aquí se debe estandarizar para todos los navegadores
  13.     },
  14.  
  15.     append : function(child){
  16.           this.el.appendChild(child.el);
  17.     }
  18.    //varios otros métodos ........
  19. }

La idea es hacer un wrapper para un elemento del DOM, y mediante los métodos modificar sus propiedades, eventos, etc... la idea sería estandarizar las cosas y hacer una clase que funcione en todos los navegadores.

Abstraer el código y trabajar ordenadamente siempre es una buena idea!

Saludos

Etiquetas: amargura, clase, dom
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 20:56.