[risolto] Problema funzione raggruppamento di elementi

pinuzzo999

Nuovo Utente
22 Gen 2014
3
0
0
Salve a tutti,
non sono molto pratico di javascript e mi sono arrangiato nel creare una funzione per la fatturazione che possa raccogliere i prodotti con la stessa aliquota iva, sommare il loro costo al netto e calcolare l'imposta sul totale. Ho provato a scrivere questa funzione, ma mi restituisce un array (che ho chiamato "iva") con un gran numero di valori undefinited.
Quale potrebbe essere l'errore?
Grazie
Pino
Codice:
function tot(){  
  var campi = $("#campi").val();//il numero degli articoli
  iva = new Array();
  var y = 0;
  var x;
  var n;
  for(x = 0; x < campi; x++){//ciclo scorro i campi
    n = parseInt($("#iva_"+x).val());
    if(iva.length == 0){//controllo se e' il primo risultato inserito
      iva[n] = parseFloat($("#in_0").val());
    }else{//se non lo e'
      for(var iv in iva){//scorro l'array dell'iva
        if(n == iv){//controllo se l'iva e gia' presente
          iva[iv] = iva[iv] + parseFloat($("#in_"+x).val());
        }else{//creo un nuovo risultato
          iva[n] = parseFloat($("#in_"+x).val());
        }
      }//fine ciclo iva
    }//fine condizione risulatato
  }//fine ciclo di for
  /*Mostro i risultati*/
  var imp;
  var ivas;
  var totiva;
  var lordo;
  var tot;
  for(var iv in iva){//scorro l'array dell'iva
    imp = iva[iv];
    ivas = iv;
    totiva = (imp*ivas)/100;
    lordo = imp+totiva;
    $("#imp").append("<tr id='i_"+y+"'><td>"+imp+"</td><td>"+ivas+"</td><td>"+lordo+"</td></tr>");
    y = y+1;
  }
}
 
Non so se ho capito bene però forse il tuo errore si trova qui :
Codice:
for(var iv in iva){//scorro l'array dell'iva
        if(n == iv){//controllo se l'iva e gia' presente
          iva[iv] = iva[iv] + parseFloat($("#in_"+x).val());
        }else{//creo un nuovo risultato
          iva[n] = parseFloat($("#in_"+x).val());
        }
      }

quando fai il controllo if(n == iv) tu vai a vedere se la variabile n è uguale all'indice dell'array e forse è questo che è sbagliato! Quindi dovresti scrivere if(n == iva[iv]) con il quale controlli se la variabile n è uguale al valore dell'elemento con indice iv nell'array iva :)

Quindi così:
Codice:
for(var iv in iva){//scorro l'array dell'iva
        if(n == iva[iv]){//controllo se l'iva e gia' presente
          iva[iv] = iva[iv] + parseFloat($("#in_"+x).val());
        }else{//creo un nuovo risultato
          iva[n] = parseFloat($("#in_"+x).val());
        }
      }

Fammi sapere :)
 
Non so se ho capito bene però forse il tuo errore si trova qui :
Codice:
for(var iv in iva){//scorro l'array dell'iva
        if(n == iv){//controllo se l'iva e gia' presente
          iva[iv] = iva[iv] + parseFloat($("#in_"+x).val());
        }else{//creo un nuovo risultato
          iva[n] = parseFloat($("#in_"+x).val());
        }
      }

quando fai il controllo if(n == iv) tu vai a vedere se la variabile n è uguale all'indice dell'array e forse è questo che è sbagliato! Quindi dovresti scrivere if(n == iva[iv]) con il quale controlli se la variabile n è uguale al valore dell'elemento con indice iv nell'array iva :)

Quindi così:
Codice:
for(var iv in iva){//scorro l'array dell'iva
        if(n == iva[iv]){//controllo se l'iva e gia' presente
          iva[iv] = iva[iv] + parseFloat($("#in_"+x).val());
        }else{//creo un nuovo risultato
          iva[n] = parseFloat($("#in_"+x).val());
        }
      }

Fammi sapere :)
Grazie per la risposta :D, ma non era quello il problema, infatti l'iva, che è contenuta nell'indice dell'array, essendo un dato numerico veniva posizionata nella 22esima posizione e quindi i campi da 0 a 21 rimanevano vuoti.
 

Discussioni simili

M
Risposte
12
Visite
3K
HTML e CSS
Membro cancellato 26246
M