Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    76

    setInterval all'interno di una classe

    Buon giorno a tutti,

    ho un piccolo problema con le temporizzazioni in javascript. Mi spiego:

    ho costruito una piccola classe in javascript e adesso vorrei che un metodo ne richiami un altro attraverso un setInterval. Posto il codice:

    Codice PHP:
    function classe(indice)
    {
        
    this.index=indice;
        
    this.interval;

        
    this.ripeti = function ()
        {
              
    alert(this.index);
        }

        
    this.start = function()
        {
              
    clearInterval(this.interval);
              
    this.interval=window.setInterval(this.ripeti,20);
        }

    }

    var 
    nuovo = new classe(0);
    classe.start(); 
    ciò che vorrei che accadesse sarebbe una serie infinita di alert con scritto l'indice della classe (in questo caso 0), invece la funzione viene eseguita ad intervalli regolari ma viene visualizzato il valore 'undefined' invece dell'indice vero e proprio.

    Qualcuno sa darmi una mano????
    grazie

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    codice:
    this.start = function() {
          var _self = this;
          clearInterval(this.interval);
          this.interval=window.setInterval(_self.ripeti,20);
    }
    Vuoi aiutare la riforestazione responsabile?

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

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    76
    ho provato la soluzione che mi hai suggerito ma continua a restuituirmi il valore 'undefined'

  4. #4
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    scusa,

    codice:
    var nuovo = new classe(0);
    nuovo.start();
    istanzi una classe e poi non la usi per richiamare il metodo. In questo modo non ha riferimento a 'this'.


    copia e incolla questa

    codice:
    function classe(indice)
    {
        this.index=indice;
        this.interval;
    
        this.ripeti = function() {
              alert(this.index);
        };
    
        this.start = function(){
             var _s = this;
             clearInterval(this.interval);
             this.interval= setInterval(function() {
                    _s.ripeti();
            },2000);
        };
    
    }
    
    var nuovo = new classe(0);
    nuovo.start();
    Vuoi aiutare la riforestazione responsabile?

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

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    76
    grazie adesso funziona.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.