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

    Bloccare funzione attivata da onclick

    Il problema è più ce altro di natura teorica, in quanto praticamente sipuò aggirare usando un setTimeout(): se un gestore di eventi onclick lancia una lunga routine (con dentro ad esempio un ciclo for da ripetere 50000 volte) ed io volessi fare in modo che un click su di un secondo bottone fermasse l'elebaorazione, cosa devo fare? Ho pensato di usare una variabile flag che venga letta all'inizio di ogni giro del for e che determini l'uscita se impostata su falso (ad esempio): il fatto è che una volta dato il via al click, il javascript si prende il controllo di ogni azione per cui non riesco più ad usare il secondo bottone. Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Potresti chiamare il "loop" tramite un setTimeout: rallenta un po' ma ti libera un po' di tempo per entrare.
    Esempio:
    Loop (attuale)
    codice:
    for (var i=0; i<MAX; i++) {
      CORPO DEL LOOP con riferimento ad i
    }
    Da sostituire con:
    codice:
    var loopabil=true;
    var i=0; // inizializzazione (variabile globale)
    function LOOP() {
      if(!loopabil) return false;
      CORPO DEL LOOP con riferimento ad i
      i++;
      if (i<MAX) setTimeout('LOOP()', 10); // riparte la funzione tra 10 millisecondi
    }
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    Si: così effettivamente va. Ma il problema - teorico ripeto - è sapere se esiste una cosa anloga al DoEvents() del Visual Basic, tanto per capirci.

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.