Con questo script controllo la configurazione di un pc, potendo intercambiare i singoli component e aggiornando automatcamente il prezzo. Il punto è che cambiando due o più componenti e poi tornando al prezzo base, il sistema si blocca! Perchè???
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 = "&euro;"
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.abs(totale)+Math.abs(valore));
} else {
// sottrazione se non è selezionato
totale = (Math.abs(totale)-Math.abs(valore));
}
}
// popolo lo span in base al totale modificato
if(document.all.prezzo) { 
document.all.prezzo.innerHTML = (Math.round((totale)*100)/100+valuta).replace(/\./, ",");
}
if(document.all.prezzo_barra) { 
document.all.prezzo_barra.innerHTML = (Math.round((totale)*100)/100+valuta).replace(/\./, ",");
} 
if(document.all.prezzo_piede) { 
document.all.prezzo_piede.innerHTML = (Math.round((totale)*100)/100+valuta).replace(/\./, ",");
}
if(document.all.rata) { 
document.all.rata.innerHTML = Math.round(totale/mesi)+valuta;
}
if(document.all.rata_barra) { 
document.all.rata_barra.innerHTML = Math.round(totale/mesi)+valuta;
}
if(document.all.rata_piede) { 
document.all.rata_piede.innerHTML = Math.round(totale/mesi)+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.abs(totale)-Math.abs(vecchio_valore_radio));
   totale = (Math.abs(totale)+Math.abs(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 = (Math.round((totale)*100)/100+valuta).replace(/\./, ",");
}
if(document.all.prezzo_barra) { 
document.all.prezzo_barra.innerHTML = (Math.round((totale)*100)/100+valuta).replace(/\./, ",");
} 
if(document.all.prezzo_piede) { 
document.all.prezzo_piede.innerHTML = (Math.round((totale)*100)/100+valuta).replace(/\./, ",");
}
if(document.all.rata) { 
document.all.rata.innerHTML = Math.round(totale/mesi)+valuta;
}
if(document.all.rata_barra) { 
document.all.rata_barra.innerHTML = Math.round(totale/mesi)+valuta;
}
if(document.all.rata_piede) { 
document.all.rata_piede.innerHTML = Math.round(totale/mesi)+valuta;
} else {
return false;
}
}
//-->
</script>
LA MIA PAGINA