SCROLLBAR CLASS

LeFauve42 Messages postés 239 Date d'inscription vendredi 20 octobre 2006 Statut Membre Dernière intervention 20 avril 2009 - 26 avril 2011 à 13:58
LeFauve42 Messages postés 239 Date d'inscription vendredi 20 octobre 2006 Statut Membre Dernière intervention 20 avril 2009 - 26 avril 2011 à 13:58
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/53077-scrollbar-class

LeFauve42 Messages postés 239 Date d'inscription vendredi 20 octobre 2006 Statut Membre Dernière intervention 20 avril 2009
26 avril 2011 à 13:58
Bonjour,

Ton code est tres clair, mais j'ai quelques remarques :
- Pourquoi creer les methodes dans le constructeur en les rajoutant a chaque object plutot qu'utiliser le prototype de ta classe ?
- Plutot que de dupliquer tout ton code pour les cas "horizontal" et "vertical", pourquoi ne pas juste stocker les noms d'attribut a utiliser pour chaque cas. Par exemple, si dans ton constructeur tu changes :
// Si type est definie
if(typeof(type) == 'undefined')
direction = 'horizontal';
else
direction = type;

par :
switch(type)
{
case 'vertical':
direction = 'vertical';
this.scrollLeftTop = 'scrollTop';
this.scrollWidthHeight = 'scrollHeight';
this.offsetWidthHeight = 'offsetHeight';
// Autres proprietes utiles
break;
default: // horizontal pour les autres valeurs
direction = 'horizontal';
this.scrollLeftTop = 'scrollLeft';
this.scrollWidthHeight = 'scrollWidth';
this.offsetWidthHeight = 'offsetWidth';
// Autres proprietes utiles

tes autres methodes deviennent beaucoup plus simples (et plus rapides). Par exemple :
this.setValue = function(percentage)
{
elem[this.scrollLeftTop] = setPercentage(percentage);
}

function getPercentage()
{
return parseInt((elem[this.scrollLeftTop] * 100) / (elem[this.scrollWidthHeight] - elem[this.offsetWidthHeight]));
}

etc...

Eric
Rejoignez-nous