Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116

    indicatore stato avanzamento ciclo

    Ho un oggetto indicatore, cioè una barra di avanzamento che indica lo stato di una operazione.
    Allora, supponendo che il valore dell'indicatore vada da 0 a 100, e che la chiamata indicatore.setvalue sia onerora, e supponendo di avere un ciclo tipo:


    for(var i = 0; i <= 19999; i++)
    {
    operazionelenta();

    indicatore.setvalue(parseInt(i*100/19999.0));

    }

    allora, visto che l'operazione indicatore.setvalue(x) è onerosa, non voglio richiamarla sempre, ma non oltre 100 volte.

    qualche consiglio? :master:
    Pietro

  2. #2
    Ciao,
    sperando di averti capito,
    valuterei l'ipotesi di chiamarla solo quando i è pari.

    Così dimezzi il numero di chiamate.

    Ciao
    Mirko Agrati
    WEB : http://mirkoagrati.110mb.com
    RSS : http://feeds.feedburner.com/MirkoAgratiArticoli

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Può essere :master: Però conta una cosa: ci sarebbero ancora tante chiamate inutili all'indicatore

    Pietro

  4. #4
    Se riesci a capire cosa per te è inutile,
    puoi creare l'algoritmo che esclude le chiamate per le condizioni che indicano
    qualcosa di inutile.
    Mirko Agrati
    WEB : http://mirkoagrati.110mb.com
    RSS : http://feeds.feedburner.com/MirkoAgratiArticoli

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da mirkoagrati
    Se riesci a capire cosa per te è inutile,
    puoi creare l'algoritmo che esclude le chiamate per le condizioni che indicano
    qualcosa di inutile.
    Il tuo ragionamento non fa una piega
    Pietro

  6. #6
    Eh....
    Mica male nè ?

    Allora potresti richiamare la funzione
    solo quando il rapporto (i*100)/20000
    non ha resto.
    Mirko Agrati
    WEB : http://mirkoagrati.110mb.com
    RSS : http://feeds.feedburner.com/MirkoAgratiArticoli

  7. #7
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da mirkoagrati
    Eh....
    Mica male nè ?

    Allora potresti richiamare la funzione
    solo quando il rapporto (i*100)/20000
    non ha resto.
    Non funzionaaaa
    codice:
    function Button1_onclick() 
    {
        var n = 0;
        var v = document.getElementById("TextArea1");
        v.value = "";
        for(var i = 0; i <= 19999; i++)
        {
            var x = i * 100.0/19999.0;
            if((x % 10) == 0) {n++; v.value += x + "\n";}
        }
        alert(n);
    }
    restituisce solo due valori: 0 e 100
    Pietro

  8. #8
    Ciao,
    come hai risolto?

    cmq,
    riguardo al post precedente,
    il denominatore sarebbe dovuto essere 20000 non 19999.

    Ciao
    Mirko Agrati
    WEB : http://mirkoagrati.110mb.com
    RSS : http://feeds.feedburner.com/MirkoAgratiArticoli

  9. #9
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da mirkoagrati
    riguardo al post precedente,
    il denominatore sarebbe dovuto essere 20000 non 19999.

    Ciao



    codice:
    function Button1_onclick() 
    {
        //per visualizzare i dati
        var v = document.getElementById("TextArea1");
        v.value = "";
    
        var max = 19999;//valore max del ciclo
        var min = 0;//valore iniziale del ciclo
        var n = 0;//conta il numero delle invocazione dell'indicatore
        var x_old = 0;//tiene traccia dell'ultima misura inviata
        
        //una qualunque operazione ciclica onerosa
        for(var i = min; i <= max; i++)
        {
            //l'indicatore ha una scala da 0 a 100
            //mi ricavo la misura
            var x = parseInt(i * 100.0/max, 10);
            
            //se la misura è stata già inviata salto questa operazione
            if(x != x_old)
            {
                n++; 
                v.value += x + "\n";//comando all'indicatore di segnare la misura effettuata
                x_old = x;
            }
            
        }
        alert(n);
    
    }
    Pietro

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.