Una forma interesante de darle un poco de vida a esas tablas que introducimos en nuestros sitios web para contener listados de, por ejemplo, productos. Con un poco de Prototype es francamente sencillo conseguir:
La tabla que queremos mejorar es algo así:
product
price
mouse
12.34
printer
23.45
screen
34.21
USB stick
1.23
keyboard
2.34
Ahora colocamos el siguiente código Javascript en un archivo a parte, así podremos reutilizarlo y no hacer demasiado pesada la página con la tabla
ListTable.prototype = {
initialize: function(tableId, path) {
table = $(tableId);
Element.addClassName(table, ‘listTable’);
var odd = true;
$A(table.getElementsByTagName(‘TR’)).each(function(row){
if(row.id !== ”){
listRow = new ListRow(row, path, odd);
odd = !odd;
}
});
}
};
var ListRow = Class.create();
ListRow.prototype = {
initialize: function(row, path, odd) {
this.row = row;
this.path = path;
if(odd) {
this.addBehavior(‘ltOdd’, ‘ltOddOver’);
} else{
this.addBehavior(‘ltEven’, ‘ltEvenOver’);
}
},
addBehavior: function(clazz, classOver) {
Element.addClassName(this.row, clazz);
this.classOver = classOver;
this.row.onmouseover = this.handleOnMouseOver.bindAsEventListener(this);
this.row.onmouseout = this.handleOnMouseOut.bindAsEventListener(this);
this.row.onclick = this.handleOnClick.bindAsEventListener(this);
},
handleOnClick: function(event) {
location.href = this.path + ‘?id=’ + this.row.id;
},
handleOnMouseOver: function(event) {
Element.addClassName(this.row, this.classOver);
},
handleOnMouseOut: function(event) {
Element.removeClassName(this.row, this.classOver);
}
};
Añades el archivo prototype.js al directorio del javascript y listo.
Toda la explicación del «truco» en el artículo original, con un ejemplo para descargar de regalo: Enhance list tables with Prototype Javascript Framework
Si te ha gustado este post no olvides suscribirte al feed para estar al tanto de las novedades
Feed RSS de los comentarios de este post.
Webmaster Libre es un blog de Alma Fernández Página alojada en Redcoruna
[...] Tablas mejoradas con Prototype [...]