Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    [Form] Sommare valori elements[x].value

    Ciao,
    sto facendo uno script che effettua un ciclo while per sommare dei valori di alcuni input. ma vedo da un alert che ho inserito per testare, che ad ogni volta (mettiamo che ho 10 inut box) non fà una sommma matematica, ma aggiunge i valori come se fosse una stringa.

    Es
    codice:
    while(a<=totalelementi)
      {
       x= x + window.document.InsertForm.elements[a].value;
      a++;
      alert(x);
      }
    l'alert mi scrive (ad esempio i primi due input sono a zero, il terzo a 99 e l'ultimo a zero)

    0
    00
    0099
    00990

    invece che scrivere solo 99 come mai?

  2. #2
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    x+=parseInt(document.InsertForm.elements[a].value, 10)
    sempre se x in partenza non è una stringa

  3. #3
    ho risolto anche così

    x = x + (window.document.InsertForm.elements[a].value + 1 - 1)

    sto cercando documentazione su quel +1 -1 ma non lo trovo(nemmeno sul libro di 700 pagine )

    sai cosa significa?

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Dovrebbe servire per fare un parseInt automatico (nel senso che per le stringhe non esiste l'operatore - per cui deve per forza fare un parseInt per poter applicare l'operatore.

    La soluzione di Xinod e` senz'altro migliore, e funziona allo stesso meodo in tutti i browser.

    Per il +1 -1 sarebbe il caso eventualmente di fare viceversa, cioe` -1 +1 altirmenti poterbbe venir vista come
    (stringa + 1) - 1
    cioe` aggiunge il carattere "1" alla stringa e poi converte in intero e toglie uno: In totale moltiplica per 10.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  5. #5

    [Form]Nomi input confronto

    Ho un problema a cui non riesco a dare soluzione.

    ho fatto un form con centinaio di input chiamati

    <input name="Can_01">
    <input name="Can_02">
    <input name="Can_03">
    ogni 5 c'è ne uno che è la somma dei valori precedenti

    <input name="Can_01">
    <input name="Can_02">
    <input name="Can_03">
    <input name="Can_04">
    <input name="Can_05">
    <input name="CanTOTALE_01">

    nel mio javascript ho bisogno di sommare tutti i campi escluso quello finale chiamato CanTOTALE_20

    ho fatto questo script

    function SommaCanTOT()
    {
    a=0;
    x=0;
    while(a<=window.document.InsertForm.elements.lengt h)
    {
    if((window.document.InsertForm.elements[a].name.substring(0,3)=="Can") && (window.document.InsertForm.elements[a].name!="CanTOTALE_20"))
    {
    x = x + (window.document.InsertForm.elements[a].value + 1 - 1) / 10;
    }

    a++;
    }

    alert(x);
    }

    il campo CanTOTALE_20 ha valore Nan, ma alla fine x è sempre uguale a Nan,siamo difronte all'oscuro maligno o sono fuso?al posto di && ho anche provato ||, ma non cambia nulla!Mi sapete dire perchè?

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Ma perche` non usi il parseInt() o parseFloat() come ti era stato suggerito?

    NaN significa Not A Number, cioe` stai facendo delle operazioni che non sono definite nel dominio delle variabili che usi.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  7. #7
    adesso provo (se risponde un'intero chiaramente sarà inutile)..ho visto che hai spostato l'altro tread. Dovresti essere cosi gentile da comunicarlo quando lo fai, avendo visto sparire il thread l'ho ricreato.

  8. #8
    sia la prima funzione che la seconda mi rispondono con un'intero..il valore precedente era 17,6. Il calcolo totale dice (tramite parseint o parsefloat ) 17.

  9. #9
    Caro moderatore,ho seguito il tuo invito "Ma perche` non usi il parseInt() o parseFloat() come ti era stato suggerito?", risultato:

    in entrambi i casi se viene passato un valore con la virgola, esso viene arrotondato a un'intero.

    Ma è colpa del javascript o mia, senza utilizzare le due funzioni, vedo che il valore passato ha la virgola...peccato per la miriadi di zeri davanti e dietro..

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    la virgola, in qualsiasi linguaggio, serve per altro che per separare i decimali.
    Si puo` trasformare la vigola in punto prima di fare il parseFloat():

    var str = document.NOMEFORM.NOMECAMPO.value;
    var num = parseFloat(str.replace(/\,/,".");

    Nota che ci sono delle backslash: se non le vedi premi il quote inbasso a dx, prima di fare il copia-incolla
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

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.