11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

j'ai créé une classe pour faire dérouler un bloc, mais j'aimerais le faire dérouler lors de la définition de la classe, donc il faudrait qu'une fonction soit appelée dans le constructeur de la classe

voilà la classe: (c'est un petit code juste pour essayer, il n'est pas très recherché...)

function defil(id, hauteur)
{
  // on capture l'element
  var element = document.getElementById(id);
  var position = element.scrollTop;
  this.etape = 1;
  var delai = 10;
  var compteur = null;
  this.hauteur = hauteur;

  /* pour le compteur on a besoin de la référence de l'objet */
  this.idRef = "CONSTRUCTEUR";
  window[this.idRef ] = this;
  /* on a la référence dans this.idRef */

  this.set = function ()
  {

    // on supprime le compteur précédent
    clearTimeout(compteur);

    // si le décalage n'est pas encore fini
    if (this.etape!=this.hauteur)
    {
      // on remet la minuterie
      compteur = setTimeout('window.'+this.idRef+'.scroll()', delai);
    }
    return true;
  }

  // fonction de scroll
  this.scroll = function()
  {
    // on décale
    element.scrollTop = position+this.etape;
    position=position+this.etape;

    // on refait appel au compteur
    this.set();

    return true;

  }

}


et j'aimerai faire appel à la fonction scroll de la classe dans le constructeur, j'ai essayé this.scroll(); mais ca ne marche pas Smiley decu

merci à ceux qui pourront m'aider!
Modifié par Beno@ (31 Jul 2007 - 10:12)
Salut,

Quelle est l'erreur ? ReferenceError ?

Est ce que t'as essayé de placer l'appel de la methode plus bas que sa definition ? (apres le this.xxx = function () {})

++
Tom
Essaie peut-être de remplacer :
this.scroll = function () { ... }

par :
function scrol () { ... }
this.scroll = scroll;

et ensuite d'appeler scroll. J'ai des doutes mais ne sait-on jamais.

PS. N'oublie pas de changer ton idref si tu veux pouvoir utiliser plusieurs objets simultanément.
Ton code fonctionne mais on peut faire mieux à ce sujet. Bon je m'écarte désolé.
blaaaaaaah a écrit :
Salut,

Quelle est l'erreur ? ReferenceError ?

Est ce que t'as essayé de placer l'appel de la methode plus bas que sa definition ? (apres le this.xxx = function () {})

++
Tom

vous êtes des dieux tous les deux, ca marche Smiley ravi
et sinon, ca m'intéresse de savoir comment je peux améliorer ce code Smiley smile