NELA MIA PAGINA ho questo script:Che viene richiamato dal radiobutton o dal checkbox così:codice:<script language="JavaScript"> // valore iniziale in euro var valore_iniziale = <%=replace((formatnumber(rs_modello("prezzo_offerta"),2)),",",".")%>; // totale iniziale var totale = valore_iniziale; // valuta var valuta = "€" var vecchio_valore_radio=0; var mesi = <%=rs_modello("rate")%> function modifica(check_box) { if(totale>=valore_iniziale && check_box!=="") { document.all.prezzo.innerHTML = ""; valore = document.Form_Controllo_Prezzo[check_box].value; if(document.Form_Controllo_Prezzo[check_box].checked == true) { // somma se selezionato totale = (Math.round(totale)+Math.floor(valore)); } else { // sottrazione se non è selezionato totale = (Math.floor(totale)-Math.floor(valore)); } } // popolo lo span in base al totale modificato if(document.all.prezzo) { document.all.prezzo.innerHTML = totale+valuta; } if(document.all.prezzo2) { document.all.prezzo2.innerHTML = totale+valuta; } if(document.all.prezzo3) { document.all.prezzo3.innerHTML = totale+valuta; } else { return false; } } // ciclo per verificare per aggiungere il valore del radio selezionato // e sottrarre il vecchio valore selezionato uso: <input onclick("verifica_radio(this.name)") var vecchio_valore_radio = 0; function setta_vecchio_valore(nome_radio) { for (i=0;i<document.Form_Controllo_Prezzo[nome_radio].length;i++){ if (document.Form_Controllo_Prezzo[nome_radio][i].checked==true) { vecchio_valore_radio = document.Form_Controllo_Prezzo[nome_radio][i].value; break } else { vecchio_valore_radio = 0; } } } function verifica_radio(nome_radio) { for (i=0;i<document.Form_Controllo_Prezzo[nome_radio].length;i++){ if (document.Form_Controllo_Prezzo[nome_radio][i].checked==true && totale>=valore_iniziale) { document.all.prezzo.innerHTML = ""; totale = (Math.floor(totale)-Math.floor(vecchio_valore_radio)); totale = (Math.floor(totale)+Math.floor(document.Form_Controllo_Prezzo[nome_radio][i].value)); //vecchio_valore_radio = document.Form_Controllo_Prezzo[nome_radio][i].value; break } } // popolo lo span in base al totale modificato if(document.all.prezzo) { document.all.prezzo.innerHTML = totale+valuta; } if(document.all.prezzo2) { document.all.prezzo2.innerHTML = totale+valuta; } if(document.all.prezzo3) { document.all.prezzo3.innerHTML = totale+valuta; } else { return false; } } //--> </script>Dunque, esistono 3 tipologie di componenti: componenti base, componenti aggiuntivi e componenti variabili. I primi hanno valore 0 perchè sono già compresi nel costo totale (e sono spuntati fin dall'inizio e non hanno parte di testo in grassetto), i secondi hanno per valore la differenza tra il costo del componente variabile meno il costo del componente base (che può essere positivo o negativo dunque)...gli ultimi hanno per valore il prezzo pieno perchè non sono compresi di base come configurazione (non sono nemmeno spuntati all'inizio). Qual è il problema? Il problema è che se fai una variazione di componente base con la sua variabile e poi torni sul base il meccanismo si blocca tutto! Però se parti con l'aggiungere un componente aggiuntivo funziona tutto perfettamente.codice:<input style="margin-right: 8px;" name="INP_Sistema_Operativo" onfocus="setta_vecchio_valore(this.name)" onclick="verifica_radio(this.name);" value="0" checked="checked" type="radio">Qualcuno potrebbe aiutarmi? C'è poi il problema dei decimali nel prezzo....come faccio? Se tolgo Math.round non funziona più niente!