Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Aiuto per un ciclo

  1. #1

    Aiuto per un ciclo

    Ciao ragazzi,
    ho questa funzione:

    codice:
    function subtotale(i){
    /*questa è la somma dell'articolo*/
    if (i=='1'){
    document.form1.art18_1.value = parseFloat("0" + document.form1.art8_1.value) + parseFloat("0" + document.form1.art9_1.value) + parseFloat("0" + document.form1.art10_1.value) + parseFloat("0" + document.form1.art11_1.value) + parseFloat("0" + document.form1.art12_1.value) + parseFloat("0" + document.form1.art13_1.value) + parseFloat("0" + document.form1.art14_1.value) + parseFloat("0" + document.form1.art15_1.value)  + parseFloat("0" + document.form1.art16_1.value) + parseFloat("0" + document.form1.art17_1.value);
    }
    if (i=='2'){
    document.form1.art18_2.value = parseFloat("0" + document.form1.art8_2.value) + parseFloat("0" + document.form1.art9_2.value) + parseFloat("0" + document.form1.art10_2.value) + parseFloat("0" + document.form1.art11_2.value) + parseFloat("0" + document.form1.art12_2.value) + parseFloat("0" + document.form1.art13_2.value) + parseFloat("0" + document.form1.art14_2.value) + parseFloat("0" + document.form1.art15_2.value)  + parseFloat("0" + document.form1.art16_2.value) + parseFloat("0" + document.form1.art17_2.value);
    }
    ....
    Siccome i valori che i può assumere vanno da 1 a 200, vorrei trovare una soluzione tale che non debba scrivere 200 volte queste operazioni.
    Sapete dirmi come posso fare?
    grazie mille

  2. #2
    Utente di HTML.it L'avatar di Lak3d
    Registrato dal
    Aug 2006
    Messaggi
    1,031
    codice:
    function subtotale(i){
       for(x=8; x<=17; x++)
          document.form1.art18_+(i)+.value += parseFloat("0" + document.form1.art+(x)+_+(i)+.value);
       return (document.form1.art18_+(i)+.value);
    }
    il concetto è questo, soltanto che non so se la sintassi +(i)+ / +(x)+ sia corretta. Credo di no.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    595
    Originariamente inviato da Lak3d
    codice:
    function subtotale(i){
       for(x=8; x<=17; x++)
          document.form1.art18_+(i)+.value += parseFloat("0" + document.form1.art+(x)+_+(i)+.value);
       return (document.form1.art18_+(i)+.value);
    }
    il concetto è questo, soltanto che non so se la sintassi +(i)+ / +(x)+ sia corretta. Credo di no.
    Non puoi costruire i "nomi di variabili" in questo modo
    Ti conviene usare "getElementById"
    codice:
    function subtotale(i){
       for(x=8; x<=17; x++)
       {
         mioArticolo = document.getElementById("art18_"+i);
         mioArticolo2 = document.getElementById("art"+x+"_"+i);
         mioArticolo.value += parseFloat("0"+mioArticolo2.value);
         return (mioArticolo2.value);
       }
    }
    Assicurandoti che "artxxx" sia indicato come "id" nel tag dell'elemento

  4. #4
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    o l' array elements dei form
    document.form1.elements['art18_'+i].value+=...

  5. #5
    Dunque ho provato la soluzione di leilond,
    perònon da i risultati giusti.

    invece di sommarmi i valori inseriti nei campi di testo, mi aggiunge semplicemente un "1".
    Cioè se ci sono 3 valori mi restituisce 111

    Come risolvo?
    Grazie a tutti

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.