Visualizzazione dei risultati da 1 a 8 su 8

Discussione: funzione prodotto

  1. #1
    Utente di HTML.it L'avatar di adp
    Registrato dal
    Oct 2008
    Messaggi
    87

    funzione prodotto

    salve ragazzi houn problema sto facendo una funzione che mi dovrebbe calcolare il prodotto tra prezzo e quantita' di un form, il prezzo è impostato a priori, la quantita' deve essere rilevata dal un campo text, poi effettuato il prodotto e poi il risultato dovrebbe andare in un altro campo text, nell'esempio sottstante in prezzo totale.
    il frammento di codice è il seguente:
    codice:
    function calcola1 (prezzo) {
    this.prezzo=prezzo
    var calcola_somma1 = 0.00;
    var articoli=document.getElementById('quantita');
    calcola_somma1 = Math.round(prezzo * articoli * 100)/100;
    document.getElementById('totale').value=calcola_somma1;
    
    
    
    }
    </script></head>
    <form name="modulo">
    <body>
    <table align="center" width="960px" border="0" cellpadding="3">
    <tr id="esterna"><td>Articolo</td><td>Immagine</td><td>Prezzo</td><td >Quantita'</td><td >Prezzo Totale</td></tr>
    <script language="JavaScript" type="text/javascript">
    
    
    for (i=0;i<articoli.length;i++)
    {
    document.write("<tr id=interna><td>",articoli[i].nome,"</td>")
    document.write("<td  align=center><img src=\"",articoli[i].imm,"\"border=0></td>")
    document.write("<td>",articoli[i].prezzo,"</td>")
    document.write("<td><input type=text id= quantita value=\"\" onChange=calcola1(articoli[",i,"].prezzo)></td>")
    document.write("<td><input type=text id=totale value=\"0.00\"></td>")
    document.write("<td><input type=button value=\"Aggiungi al carrello\" onclick=\"aggiungiCarrello(articoli[",i,"].nome,articoli[",i,"].prezzo)\"></tr>")
    }
    quando esco dal campo quantita il prezzo totale mi appare NAN, come mai? ho la vaga impressione che nn viene recuperato la quantita' effettiva da quantita', come posso rislvere?
    grazie 100000
    Adp

  2. #2
    Nella funzione calcola1(prezzo) il codice

    var articoli=document.getElementById('quantita');

    non restituisce un valore, ma un oggetto.

    Cambialo con:

    var articoli=document.getElementById('quantita').value ;

    e forse risolvi...
    Tecnolgie per l'arte.
    Arti per la tecnologia.
    softhare

  3. #3
    Utente di HTML.it L'avatar di adp
    Registrato dal
    Oct 2008
    Messaggi
    87
    Si risolvo, ma stranamente solo al primo articolo mi da il prodotto, il resto delle righe nn fa nulla,............come mai????
    Adp

  4. #4
    guarda che l'id per definizione e' univoco.
    tu stai mettendo articoli.length volte un textfield che ogni volta ha lo stesso id.
    assumo quindi che il getElementById ti prenda solo il primo.
    max

    Silence is better than bullshit.
    @mmarcon
    jHERE, Maps made easy

  5. #5
    Utente di HTML.it L'avatar di adp
    Registrato dal
    Oct 2008
    Messaggi
    87
    e quindi come si dovrebbe risolvere dovrei fare per ogni articolo
    codice:
    for (i=0;i<articoli.length;i++)
    {
    document.write("<tr id=interna><td>",articoli[i].nome,"</td>")
    document.write("<td  align=center><img src=\"",articoli[i].imm,"\"border=0></td>")
    document.write("<td>",articoli[i].prezzo,"</td>")
    document.write("<td><input type=text id= quantita value=\"\" onChange=calcola1(articoli[",i,"].prezzo)></td>")
    document.write("<td><input type=text id=totale value=\"0.00\"></td>")
    document.write("<td><input type=button value=\"Aggiungi al carrello\" onclick=\"aggiungiCarrello(articoli[",i,"].nome,articoli[",i,"].prezzo)\"></tr>")
    cambiando ogni volta l'id della quantità in un altra cosa tipo in=quantita1, pero' a questo punto non posso utilizzare un ciclo for per l'array articoli per far uscire fuori appunto gli articoli.'??????
    Adp

  6. #6
    Ma si che puoi!

    Prova una cosa di questo genere:

    codice:
    function calcola1 (it) {
    var prezzo=articoli[it].prezzo;
    var calcola_somma1 = 0.00;
    var articoli1=document.getElementById('quantita'+it);
    calcola_somma1 = Math.round(prezzo * articoli1 * 100)/100;
    document.getElementById('totale'+it).value=calcola_somma1;
    
    
    
    }
    </script></head>
    <form name="modulo">
    <body>
    <table align="center" width="960px" border="0" cellpadding="3">
    <tr id="esterna"><td>Articolo</td><td>Immagine</td><td>Prezzo</td><td >Quantita'</td><td >Prezzo Totale</td></tr>
    <script language="JavaScript" type="text/javascript">
    
    
    for (i=0;i<articoli.length;i++)
    {
    document.write("<tr id=interna"+i+"><td>",articoli[i].nome,"</td>")
    document.write("<td  align=center><img src=\"",articoli[i].imm,"\" border=0></td>")
    document.write("<td>",articoli[i].prezzo,"</td>")
    document.write("<td><input type=text id=quantita"+i+" value=\"\" onChange=calcola1(",i,")></td>")
    document.write("<td><input type=text id=totale"+i+" value=\"0.00\"></td>")
    document.write("<td><input type=button value=\"Aggiungi al carrello\" onclick=\"aggiungiCarrello(articoli[",i,"].nome,articoli[",i,"].prezzo)\"></tr>")
    }
    dove generi dinamicamente l'ID dei singoli articoli usando il loro indice postposto ad una costante stringa.
    Tecnolgie per l'arte.
    Arti per la tecnologia.
    softhare

  7. #7
    Utente di HTML.it L'avatar di adp
    Registrato dal
    Oct 2008
    Messaggi
    87
    Provato, ma nel campo totale non mi esce la cifra, ma NaN, come mai?
    grazie
    Adp

  8. #8
    Perchè ho copiato e modificato il tuo script originale, compreso il primo errore che ti avevo segnalato.

    Aggiungi il .value e dovrebbe andare...
    Tecnolgie per l'arte.
    Arti per la tecnologia.
    softhare

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 © 2026 vBulletin Solutions, Inc. All rights reserved.