Blog

Conociendo al objeto “Element”

Mar 19, 2009 | Español | By Crysfel | 9 Comments | Read in English

Cuando necesitamos trabajar con elementos del DOM (Document Object Model) es de suma importancia conocer el objeto “Element” pues contiene métodos que nos facilitará el trabajo.

Conociendo al objeto “Element”
Author: Crysfel

I'm a software developer with 6+ years of experience, when I'm not developing software I may be writing a tutorial, you can follow me on twitter

Esperar cuando el DOM esté listo para usarse

Hemos visto en los primeros temas de este curso como lograr esto, en esta ocasión utilizaré un objeto debidamente empaquetado para explicar el funcionamiento del objecto “Element”, de esta manera evitamos conflictos con cualquier otro código de terceros.

//se crea el “paquete”
Ext.namespace('com.quizzpot.tutorial');

com.quizzpot.tutorial.Element = {
	init: function(){
		//el código del tutorial irá aquí
	}
}
//Cuando el DOM esté listo se invoca la función “init”
Ext.onReady(com.quizzpot.tutorial.Element.init,com.quizzpot.tutorial.Element);

Es importante mencionar que el segundo parámetro que se le pasa al evento “onReady” es el contexto donde se ejecutará.

Obtener un elemento

Normalmente utilizamos el método “document.getElementById” para tomar elementos del documento mediante su identificador, con Ext JS podemos obtener los elementos de la siguiente manera:

var el = Ext.Element.get('my_id');
// o simplemente el atajo
var el = Ext.get('my_id');

Existen numerosas ventajas al utilizar este método ya que no solamente regresa el elemento del DOM sino que retorna un objeto con métodos y propiedades que podemos utilizar para manipularlo, por ejemplo para agregar o quitar clases CSS lo hacemos de la siguiente manera:

//tomamos el elemento “panel”
var el = Ext.get('panel');
//se le agrega la clase “element”
el.addClass('element');
//le quitamos la clase “anotherClass” al elemento
el.removeClass('anotherClass');

También podemos agregarle estilos al elemento de una manera muy sencilla utilizando el método “setStyle” de la siguiente manera:

//un estilo a la vez
el.setStyle('background-color','#CFE5FA');
el.setStyle('border','1px solid #99BBE8');
// o varios al mismo tiempo
el.setStyle({
	'background-color','#CFE5FA',
'border','1px solid #99BBE8'
});

Existen muchos métodos más que están disponibles y que nos pueden ayudar para trabajar eficientemente. En el siguiente ejemplo se muestran varios de ellos:

//Centrar el elemento en la pantalla
el.center();
//cambiar la opacidad del elemento a 85%
el.setOpacity(.85);

//obteniendo el padre del elemento
var parent = el.parent();
//agregando algunos estilos al padre
parent.setStyle({
	'background-color':'#ccc',
	'font-family':'"Trebuchet MS",Arial,sans-serif',
	'font-size':'.9em'
});

//el contenido se hace no seleccionable
el.unselectable();

//elimina el elemento del DOM
el.remove();

Mejorado el rendimiento

Si solamente necesitamos modificar alguna propiedad de un elemento en una sola línea de código y no necesitamos tener una referencia a ese objeto es conveniente utilizar el método “fly” de la clase “Element”, pues nos permite ahorrar memoria del explorador ya que no crea una instancia de la clase Element para que el objeto sea manipulado sino que utiliza la misma memoria una y otra vez, por ejemplo para cambiar un estilo sería de la siguiente manera:

Ext.Element.fly('footer').setStyle('border','1px solid #aaa');
// o el atajo
Ext.fly('footer').setStyle('border','1px solid #aaa');

Conclusiones

La clase “Ext.Element” puede ser utilizada con frecuencia en nuestros proyectos para manipular el DOM, por eso es importante conocer los métodos que contiene para utilizarlos cuando sea conveniente. Te recomiendo ver el API de esta clase para conocerla mejor.

9 Responses to “Conociendo al objeto “Element””

  • darcktruck Mar 19, 2009

    hola que bueno que hay videos para esta pate, es un curso muy interesante ademas de muy dinamico y explicas bien las cosas. Despues de este estaria bueno uno de java jejejeje… :) saludos

    • Miguel Laynes Jan 15, 2010

      antes.. me reafirmo en que la forma de presentacion del curso es inmejorable…
      revisando tu ejemplo:
      1. //un estilo a la vez
      2. el.setStyle(‘background-color’,'#CFE5FA’);
      3. el.setStyle(‘border’,’1px solid #99BBE8′);
      4. // o varios al mismo tiempo
      5. El.setStyle({
      6. ‘background-color’,'#CFE5FA’,
      7. ‘border’,’1px solid #99BBE8′
      8. });
      Da error xq el elemento “el” tomado del DOM en la linea 5 esta con mayuscula: “El” ..ExtJS diferencia mayusculas de minisculas en todas sus declaraciones

    • Crysfel Jan 18, 2010

      Gracias por la observación, correjido :)

  • ivanfc0o Aug 17, 2009

    Wow.. realmente es un frameworks con caracteristicas muy interesantes..

  • wgomsa Mar 17, 2010

    Estado viendo los tutos y pues son fantasticos, estoy empesando recien con ExtJs y con este material se aprende muy bien. Felicitaciones a la persona que hace posible esto, de verdad te agradesco y mis felicitaciones.
    Saludos desde Trujillo – Perú

  • djmashe Jun 26, 2010

    Excelentes tutoriales, pero una consulta, en el 4° cuadro de códigos, donde vemos:

    //un estilo a la vez
    el.setStyle(‘background-color’,'#CFE5FA’);
    el.setStyle(‘border’,’1px solid #99BBE8′);
    // o varios al mismo tiempo
    el.setStyle({
    ‘background-color’,'#CFE5FA’,
    ‘border’,’1px solid #99BBE8′
    });

    el ultimo setStyle no tendría que ser:

    //un estilo a la vez
    el.setStyle(‘background-color’,'#CFE5FA’);
    el.setStyle(‘border’,’1px solid #99BBE8′);
    // o varios al mismo tiempo
    el.setStyle({ ‘background-color’:'#CFE5FA’,
    ‘border’,’1px solid #99BBE8′
    });

    o sea, 2 puntos entre la propiedad y su valor; y luego separar las propiedades entre comas, en vez de las continuas comas que estan?

    Saludos desde Posadas, Misiones Argentina.

    • djmashe Jun 26, 2010

      voy de nuevo, en vez de:

      el.setStyle({
      ‘background-color’,’#CFE5FA’,
      ‘border’,’1px solid #99BBE8′
      });

      ser:

      el.setStyle({
      ‘background-color’ : ‘#CFE5FA’,
      ‘border’ : ’1px solid #99BBE8′
      });

      saludos

  • Santiago Jun 30, 2010

    [quote]
    Crysfel Jan 18, 2010

    Gracias por la observación, correjido :)
    [/quote]

    Se dice “corregido”, corregido :)

Leave a Reply







Updates

RSS

Subscribe to our feeds to receive updates of our newest posts and free tutorials.

Site search

Maybe we have what you need, would you like to search first?

Donations

Would you buy me a cup of coffee? I am sharing my knowledge and time with you, help this project grow. Thank you!