Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,592

    variabili che perdono il valore

    Salve, sto cercando di capire qualcosa su una serie di variabili che sono valorizzate e di cui faccio un calcolo per sommarle.
    Tutti i valori sono ok, nel senso che se le visualizzo sono ok, ma se faccio la somma non mi da nulla..
    a parte l'assurdità che ce ne sono alcune prese da DB che devo lavorarle anche se sono numeri, ma queste non capisco davvero cosa abbiano di strano..
    E' vero che sono in una pagina complessa, ma una volta valorizzate perchè non fa la somma?
    codice:
    var stringa = '', secondi_calcolati= 0, rientro_secondi = '', tempo_restante = '';
    tempo_restante = (secondi_calcolati-rientro_secondi);
    se stampo a video le variabili sono tutte ok.
    E' possibile che rientro_secondi sia 0, ma se 754 - 0 ancora fa 754 perchè non mi scrive nulla?

  2. #2
    ciao!

    scusa ma non si capisce molto bene quale sia il dubbio:
    codice:
    var stringa = '', secondi_calcolati = 0, rientro_secondi = '', tempo_restante = '';
    tempo_restante = (secondi_calcolati - rientro_secondi);
    console.log(tempo_restante);

    in console comprarià giustamente zero, in quanto secondi_calcolati = 0 e rientro_secondi è una variabile vuota.

    invece questo stamperà 754:
    codice:
    var stringa = '', secondi_calcolati = 754, rientro_secondi = '', tempo_restante = '';
    tempo_restante = (secondi_calcolati - rientro_secondi);
    console.log(tempo_restante);

    754 - 0 = 754.
    non ci vedo nulla di strano!


    qual'è il tuo dubbio??

  3. #3
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,592
    no no!!
    sono stato molto stringato, mi rendo conto.
    ma tra
    codice:
    var stringa = '', secondi_calcolati = 754, rientro_secondi = '', tempo_restante = '';
    e questo
    codice:
    tempo_restante = (secondi_calcolati - rientro_secondi);
    pesca i dati da php e li mette nelle variabili.
    credo dipenda dal fatto che sia fatto un po' con php un po' con js..
    i dati li pesca da un json così
    codice:
    intervalli_orari.forEach(function(orario) {
    var stringa = '', secondi_calcolati= 0, rientro_secondi = '', tempo_restante = '';
    poi il resto..
    quindi se trova qualcosa "vuoto" non fa il calcolo, non mi fila proprio

  4. #4
    ok.

    hai controllato nel forEach se i dati arrivano?

    poi, puoi postare il codice più completo??

  5. #5
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,592
    codice:
    function disegna_consegne(consegne,fattorini) {
      var html=''; 
      var start_div = '<div class="timetable_font timetable_colonna_riga_sotto timetable_zone_parametri">'; 
    
      intervalli_orari.forEach(function(orario) { 
        var stringa = '', numpizze = 0, numconsegne = 0, impegno= 'basso', numbibite=0, Riaccoppiate = 0, rientro_minuti = 0 , FATTORINI_secondi = 0, orario_inquesto_momento = '', orario_consegna = '' , ORA_orario_consegna = '' ,  MINUTI_orario_consegna = '' , tempo_restante = 0 , rientro_secondi = 0;
        
    FATTORINI_secondi += (fattorini[orario].tempo_fattorino );
        
        
    var lettere_zona = [];
         var zona = [];
         var zona_html = [];
         var zona_stampa = '';
         var lettera_zona_cancelletto = '';     
         var numero_zona_cancelletto = 0;  
         var consegna_presente = false;
               
        if (consegne['zone']) {
             var zone_all = consegne['zone'].slice(); 
        }   
        consegne[orario] && consegne[orario].forEach(function(consegna){
    
    
        accoppiate.push(consegna);
        if(consegna.ord_id_accoppiata != "") {
        Riaccoppiate++
        }
            rientro_minuti += (consegna.rientro_minuti)*2/2;
            
            rientro_secondi = rientro_minuti*60;
            orario_consegna = consegna.orario;
            ORA_orario_consegna = orario_consegna.substring(0, 2);
            MINUTI_orario_consegna = orario_consegna.substring(3, 5);
    
            rientro_secondi = Math.round(rientro_secondi);
            orario_inquesto_momento = consegna.orario_inquesto_momento;
            ora_inquesto_momento = orario_inquesto_momento.substring(0, 2);
            minuto_inquesto_momento = orario_inquesto_momento.substring(3, 5);
            secondi_inquesto_momento = minuto_inquesto_momento*60; 
    
    tempo_restante = FATTORINI_secondi-rientro_secondi;
    
    
    
        var fattorino_locale = parseInt(consegna.ord_consegna) == 0; 
         
         if (fattorino_locale == false) {                
             var arr_cons = consegne[orario];      
             var arr_cons_find = arr_cons.filter(function(obj) {
                 return obj.zona == consegna.zona;
             });
             var numero_zona = arr_cons_find.length;
             zona[consegna.zona] = numero_zona;
        lettera_zona_cancelletto = '#';          
             if (parseInt(consegna.ord_consegna) == 1) { //Appena_possibile
                 if (numero_zona_cancelletto == 0) {numero_zona_cancelletto = 1;}
                 else {numero_zona_cancelletto++;}        
            }
         }     
    numpizze += consegna.numpizze;
          numbibite += consegna.numbibite;
    
    });         
            var zone_obj = []; 
            zone_all && zone_all.forEach(function(z) {
                if (typeof zona[z] == 'undefined') {
                    /* Inserisco un div vuoto perché altrimenti non sistema bene le zone nel blocco */
                    zone_obj.push({lettera: z, numero: '<div class="numero_vuoto"></div>'});
                    
                } else {                
                    zone_obj.push({lettera: z, numero: zona[z]});
                }
            });
            for (var z2 in zona) {
                if(parseInt(zona[z2]) > 0) {consegna_presente = true;}
            } 
            zone_obj.sort(function(a, b){
                return ( (a.lettera < b.lettera) ? -1 : ( ( a.lettera > b.lettera ) ? 1 : 0 ) );
            });       
            for (var z2 in zone_obj) {
                if(consegna_presente == true) {
                    zona_html.push(start_div + zone_obj[z2].numero + ' ' + zone_obj[z2].lettera + '</div>');
                }
            } 
    
    
    zona_stampa = zona_html.join(" ");
             
    if (numero_zona_cancelletto == 0) {numero_zona_cancelletto = '';}
    
        if(fattorini[orario]){
            if(fattorini[orario].pxo <= numpizze) {
                  impegno = 'medio';
            }
            if(fattorini[orario].fatt <= numconsegne) {
                  impegno = 'intenso';
            }
            if(fattorini[orario].fatt == -1) {
                  impegno = 'scaduto';
        }
        } else {
            impegno = 'scaduto';
            fattorini[orario] = {fatt: 0};
        }
        if (fattorini[orario].fatt <= 0) {fattorini[orario].fatt = '&nbsp';}
        if (numconsegne <= 0) {numconsegne = '&nbsp';}
        if (numbibite <= 0) {numbibite = '&nbsp';}
        
         if (numero_zona_cancelletto == 0) { /* Div vuoto - altrimenti sballa il layout */        
            numero_zona_cancelletto = '<div class="numero_vuoto"></div>'; 
        }
    
    stringa = '<div class="timetable_riga"> <div> <span class="timetable_font_sopra">' + fattorini[orario].fatt + '</span> <p>Pony</p> </div> <div> <span class="timetable_font_sopra">' + numconsegne + '</span> <p>Consegne</p> </div> <div> <span class="timetable_font_sopra">' + numpizze + '</span> <p>Pizze</p> </div> <div></div></div><div class="timetable_riga timetable_zone timetable_sotto"><div class="timetable_font timetable_colonna_riga_sotto timetable_zone_parametri">' +  tempo_restante + ' ' + lettera_zona_cancelletto + '</div>'+ zona_stampa + '</div></div>';
    
    
        $("#H" + orario.replace(':', '')).attr("class", impegno).html(stringa);
      });
      /* Inserisco la zona della comanda attuale */
    
    var zone_reali = JSON.parse($('#zone_orari').val());
      var zona_comanda_array = zona_comanda.split(',');     
      zona_comanda_array[0] = zone_reali[zona_comanda_array[0]];
    
      $("#orario_vuoto_0").html('<span id="zona_grande">' + zona_comanda_array[0] + '</span>');
    }
    per me è una branda, mi viene il mal di testa solo a fare copia e incolla..
    quello che fa è: prende i dati, li mette in un array e cicla con i quarti d'ora tutte le consegne che ci sono.
    L'output lo fa con la variabile "stringa" ma se non ci sono consegne non valorizza nemmeno le variabili che dovrebbero invece essere ok come quelle sopracitate: cioè se io faccio:
    codice:
    stringa = '<div class="timetable_riga">
    <div> <span class="timetable_font_sopra">' + fattorini[orario].fatt + '</span> <p>Pony</p> </div>
    <div> <span class="timetable_font_sopra">' + numconsegne + '</span> <p>Consegne</p> </div> 
    <div> <span class="timetable_font_sopra">' + numpizze + '</span> <p>Pizze</p> </div>
    <div></div></div>
    <div class="timetable_riga timetable_zone timetable_sotto">
    <div class="timetable_font timetable_colonna_riga_sotto timetable_zone_parametri">' + FATTORINI_secondi+ ' ' + lettera_zona_cancelletto + '</div>'+ zona_stampa + '</div></div>';
    anche dove non ci sono consegne mi scrive un valore sopra i 750 che è giusto..
    ma la variabile "tempo_restante " me la mette corretta solo dove ci sono delle consegne, nel resto dei blocchi è 0
    grazie e ti capirò se non mi rispondi perchè il codice è un casino, e infatti non l'ho scritto io, l'ho ereditato
    Ultima modifica di telegio; 19-03-2018 a 18:37

  6. #6
    ciao!

    ma se non ci sono consegne non valorizza nemmeno le variabili che dovrebbero invece essere ok
    ma dovrebbero essere ok in che senso??
    sono tutte istanziate nel forEach.
    quindi ad ogni giro si resettano e si rivalorizzano.


    codice:
    intervalli_orari.forEach(function (orario) {
    var stringa = '' --> AD OGNI GIRO LA INIZIALIZZI VUOTA
    });

  7. #7
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,592
    sì è giusto perchè mette le consegne nei quarti d'ora e in ogni quarto d'ora segna quante pizze devono essere cotte, quante bevande sono state vendute, quante persone sono in giro a consegnare, in quale zona sono, se ci sono consegne accoppiate e altra roba..
    comunque mettendo questa riga
    var FATTORINI_secondi = FATTORINI_secondi;
    appena prima di
    stringa = '<div class="timetable_riga"> bla bla bla..
    quando faccio
    <div class="timetable_font timetable_colonna_riga_sotto timetable_zone_parametri">' + FATTORINI_secondi+ BLA BLA BLA
    assurdamente me lo valorizza correttamente mentre nella posizione in cui sta qua sopra mi da sempre 0
    dire che non ci sto capendo una mazza è davvero un eufemismo...

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.