Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924

    setTimeout dentro una classe JS (da paura!)

    Ciao a tutti, ho il segeunte problema (che naturalmente mi sono cercato da solo... :rollo: )

    vorrei sapere all'interno di una classe in js come posso fare un settimeout verso la classe stessa: il (frammento di) codice è il seguente:

    codice:
        scrollX : function(scrollBy, speed) {
    
            this.tClip += scrollBy;
            this.bClip += scrollBy;
            this.tPos -= scrollBy;
        
            //alert("tclip:"+this.tClip +" - "+ this.bClip +">"+this.hDiv);
            
            if (this.tClip < 0 || this.bClip > this.hDiv) {
                this.tClip -= scrollBy;
                this.bClip -= scrollBy;
                this.tPos += scrollBy;    
            }
            
            
            this.scrollDiv.style.clip = 'rect('+ this.tClip +'px, '+ this.wClip +'px, '+ this.bClip +'px, 0)';   
            this.scrollDiv.style.top = this.tPos + 'px'; 
            this.interval = setTimeout('this.scrollX('+scrollBy+', '+speed+')', speed);        
        },
    
    ...
    in pratica non riesco ad eseguire l'istruzione in rosso perchè js dice che this.scrollX non è una funzione (!!!) : ho provato anche a fare qlcs del tipo


    codice:
    
      callfunc : function(scrollBy, speed) {
          this.scrollX(scrollBy, speed); 
      },
    
      
      scrollX : function(scrollBy, speed) {
    
            this.tClip += scrollBy;
            this.bClip += scrollBy;
            this.tPos -= scrollBy;
        
            //alert("tclip:"+this.tClip +" - "+ this.bClip +">"+this.hDiv);
            
            if (this.tClip < 0 || this.bClip > this.hDiv) {
                this.tClip -= scrollBy;
                this.bClip -= scrollBy;
                this.tPos += scrollBy;    
            }
            
            
            this.scrollDiv.style.clip = 'rect('+ this.tClip +'px, '+ this.wClip +'px, '+ this.bClip +'px, 0)';   
            this.scrollDiv.style.top = this.tPos + 'px'; 
            var s = this.callfunc(scrollBy, speed);
            this.interval = setTimeout(s, speed);   
    
        },
    
    ...
    però la console javascript di FF mi lancia un warning dicendo "too many recursion" e l'esecuzione dell script avviene, ma troppo velocemente (in una volta sola)

    che ne pensate?
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    633
    un modo per risolvere il tuo problema usando:
    1. la possibilità del setTimeout/setInterval di ricevere in input il riferimento ad una funzione (non la stringa),
    2. la catena delle visibilità
    è il seguente:
    codice:
    a = {
    metodoRicorsivo : function(scrollBy, speed) {
    		ths = this;
    		alert("scrollBy = "+scrollBy+"\nspeed = "+speed);
    		setTimeout(function(){ths.metodoRicorsivo(scrollBy +100, speed+100)},1000)
        }
      }
      
    onload = function(){a.metodoRicorsivo(100,0);}
    Se non ricordo male, sul forum WeDev, mesi fa, avevamo approfondito l'argomento, ma ora il server è giù
    ...quando riesci, da un'occhiata tra le varie discussioni,
    ciauz
    Alcuni miei articoli in PRO.HTML.IT: JavaScript | DHTML | DOM
    Sviluppo : wedev | forum

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    633
    la discussione alla quale mi riferivo è questa:
    http://forum.wedev.it/index.php?act=ST&f=10&t=69&
    ciauz
    Alcuni miei articoli in PRO.HTML.IT: JavaScript | DHTML | DOM
    Sviluppo : wedev | forum

  4. #4
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    grazie standard, non appena rientro in ufficio lo provo subito...

    ciao.
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  5. #5
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    che dire... funziona!!
    Ma giusto per avere idee un pò più precise, esiste una qualche documentazione in giro che spiega come programmare ad oggetti in JS??

    Grazie!!
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.