Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    problemi con setInterval

    Ho inizializzato un setInterval

    codice:
    				var intervallo = window.setInterval(function () {
    				  sndReq('Url='+update[2],update[0]);
    				},5000);

    è corretto disattivarlo così???

    codice:
    clearInterval(intervallo);

    sto provando ma non funza!
    Hosting, VPS, SSL e Domini: https://www.blooweb.it

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Tutto dipende da come inizializzi la variabile intervallo... ne modo che tu usi si presume (manca il resto del codice) cghe suia fatto all'interno di una funzione... cosi' il scope (ovvero l'ambito nel quale esiste) e' solo quello della funzione che la definisce: dall'esterno e da altre funzioni e' invisilbile.
    codice:
    var intervallo; // in questo modi la variabile e' "pubblica" ovvero visibile da qualunque script nella pagina
    function funzione1() {
      intervallo = setInterval(...) // nota l'assenza di var
    }
    function funzione2() {
      clearInterval(intervallo)
    }
    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    si forse se posto tutto il codice è meglio

    codice:
    function handleResponse() {
    	if(http.readyState == 4){
    		var response = http.responseText;
    		var update = new Array();
    
    		if(response.indexOf(']|[' != -1)) {
    			update = response.split(']|[');
    			document.getElementById(update[0]).src = update[1];
    			if (update[1]=='..../sito/preload.gif') {
    				var intervallo = window.setInterval(function () {
    				  sndReq('Url='+update[2],update[0]);
    				},3000);
    			} else {
    				clearInterval(intervallo);
    			}
    		}
    	}
    }
    Il problema è che avvio il setInterval sono ad una data considizione e lo disattivo nell'else di questa condizione, il tutto avviene dentro la stessa funzione, non posso metterla fuori in quanto altrimenti, credo, non avrei la variabile "update[1]" per poter fare l'IF
    Hosting, VPS, SSL e Domini: https://www.blooweb.it

  4. #4
    Devi usare una variabile globale; per "sporcare" il meno possibile setta intervallo come proprietà della funzione handleResponse e non di window:
    codice:
    function handleResponse() {
    	if(http.readyState == 4){
    		var response = http.responseText;
    		var update = new Array();
    
    		if(response.indexOf(']|[' != -1)) {
    			update = response.split(']|[');
    			document.getElementById(update[0]).src = update[1];
    			if (update[1]=='..../sito/preload.gif') {
    				handleResponse.intervallo = window.setInterval(function () {
    				  sndReq('Url='+update[2],update[0]);
    				},3000);
    			} else {
    				clearInterval(handleResponse.intervallo);
    			}
    		}
    	}
    }

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