Alhazred
02-07-2008, 21.20.26
Sto simulando una pagina HTML per l'acquisto di prodotti online, ma la funzione "totale" non mi funziona, l'avevo fatta in un altro modo ed avevo un problema con gli statement if else, ma almeno qualcosa faceva. Questa invece è come se non venisse attivata, vedete il problema?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Prova acquisto</title>
<SCRIPT TYPE="text/javascript">
<!--
var parziale = 0;
var scelti = new Array();
function arrotonda(numero,decimali)
{
var potenza = Math.pow(10,decimali);
return Math.round(numero * potenza)/potenza;
}
function totale(obj)
{
var trovato = new Boolean(false);
var posizione = 0, i = 0;
if(obj.value.length > 0) //se è stato inserito almeno un carattere
if (obj.value < 0) //se il numero inserito è negativo
{
alert("Non è consentito inserire un numero negativo");
return;
}
if(obj.value.length == 0) //se è stato cancellato lo 0 senza inserire nulla
obj.value = "0"; //riscrive lo 0
//permette solo numeri
quantita = obj.value.replace(/\D/g,"0");
obj.value = quantita;
if (scelti.length > 0) //se non ci sono elementi il controllo è inutile
while (!trovato || i <= scelti.length)
if (obj.name == scelti[i])
{
trovato = true;
posizione = i; //posizione in cui si trova il nome dell'ingrediente nell'array
i = scelti.length+1; //fa terminare il ciclo
}
else i++;
if (trovato)
scelti[posizione+1] = obj.value; //modifica la quantità (che si trova in posizione+1
else //aggiungi all'array
{
scelti.push(obj.name); //inserisce il nome nell'ultima posizione
scelti.push(obj.value); //inserisce la quantità dopo il nome
}
parziale = 0; //azzera il totale parziale per ricalcolarlo
for(i = 0; i < scelti.length; i+2) //ciclo sull'array, +2 perché controllo solo le posizioni con i nomi
{
prezzo = obj.form.elements["pr"+scelti[i]].value; //prendo il prezzo unitario dalla form
parziale = arrotonda((parziale + (prezzo*scelti[i+i])),2); //calcolo il parziale sull'ingrediente corrente e lo sommo ai precedenti
}
obj.form.prztotale.value = parziale; //aggiorno il campo totale della form
}
//-->
</SCRIPT>
</head>
<body>
<table width="877" border="0" cellpadding="0" cellspacing="0">
<!--DWLayoutTable-->
<tr>
<td width="332" height="67"> </td>
<td width="344"> </td>
<td width="205"> </td>
</tr>
<tr>
<td height="197"> </td>
<form action=""/>
<td valign="top">
<table width="341" border="1">
<!--DWLayoutTable-->
<tr>
<td width="111" height="23"><div align="center"><strong>Ingrediente</strong></div></td>
<td width="64"><div align="center"><strong>prezzo</strong></div></td>
<td width="144" valign="top"><div align="center"><strong>quantità</strong></div></td>
</tr>
<tr>
<td height="26">Patate</td>
<td><input name="prPatate" type="hidden" value="0.50" />0,50</td>
<td valign="top"><input name="Patate" type="text" onChange="totale(this)" value="0" size="3" maxlength="3"/></td>
</tr>
<tr>
<td height="26">Uova</td>
<td><input name="prUova" type="hidden" value="0.08" />0,08</td>
<td valign="top"><input name="Uova" type="text" onchange="totale(this)" value="0" size="3" maxlength="3"/></td>
</tr>
<tr>
<td height="26">Peperoni</td>
<td><input name="prPeperoni" type="hidden" value="0.60" />0,60</td>
<td valign="top"><input name="Peperoni" type="text" onChange="totale(this)" value="0" size="3" maxlength="3"/></td>
</tr>
<tr>
<td height="26">Carciofi</td>
<td><input name="prCarciofi" type="hidden" value="3.20" />3,20</td>
<td valign="top"><input name="Carciofi" type="text" onChange="totale(this)" value="0" size="3" maxlength="3"/></td>
</tr>
<tr>
<td height="26">Spaghetti</td>
<td><input name="prSpaghetti" type="hidden" value="0.85" />0,85</td>
<td valign="top"><input name="Spaghetti" type="text" onChange="totale(this)" value="0" size="3" maxlength="3"/></td>
</tr>
<tr>
<td height="26"></td>
<td><strong>Totale</strong></td>
<td valign="top"><input name="prztotale" type="text" value="0" readonly /></td>
</tr>
</table></td>
</tr>
<tr>
<td height="186"> </td>
<td> </td>
<td> </td>
</tr>
</table>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Prova acquisto</title>
<SCRIPT TYPE="text/javascript">
<!--
var parziale = 0;
var scelti = new Array();
function arrotonda(numero,decimali)
{
var potenza = Math.pow(10,decimali);
return Math.round(numero * potenza)/potenza;
}
function totale(obj)
{
var trovato = new Boolean(false);
var posizione = 0, i = 0;
if(obj.value.length > 0) //se è stato inserito almeno un carattere
if (obj.value < 0) //se il numero inserito è negativo
{
alert("Non è consentito inserire un numero negativo");
return;
}
if(obj.value.length == 0) //se è stato cancellato lo 0 senza inserire nulla
obj.value = "0"; //riscrive lo 0
//permette solo numeri
quantita = obj.value.replace(/\D/g,"0");
obj.value = quantita;
if (scelti.length > 0) //se non ci sono elementi il controllo è inutile
while (!trovato || i <= scelti.length)
if (obj.name == scelti[i])
{
trovato = true;
posizione = i; //posizione in cui si trova il nome dell'ingrediente nell'array
i = scelti.length+1; //fa terminare il ciclo
}
else i++;
if (trovato)
scelti[posizione+1] = obj.value; //modifica la quantità (che si trova in posizione+1
else //aggiungi all'array
{
scelti.push(obj.name); //inserisce il nome nell'ultima posizione
scelti.push(obj.value); //inserisce la quantità dopo il nome
}
parziale = 0; //azzera il totale parziale per ricalcolarlo
for(i = 0; i < scelti.length; i+2) //ciclo sull'array, +2 perché controllo solo le posizioni con i nomi
{
prezzo = obj.form.elements["pr"+scelti[i]].value; //prendo il prezzo unitario dalla form
parziale = arrotonda((parziale + (prezzo*scelti[i+i])),2); //calcolo il parziale sull'ingrediente corrente e lo sommo ai precedenti
}
obj.form.prztotale.value = parziale; //aggiorno il campo totale della form
}
//-->
</SCRIPT>
</head>
<body>
<table width="877" border="0" cellpadding="0" cellspacing="0">
<!--DWLayoutTable-->
<tr>
<td width="332" height="67"> </td>
<td width="344"> </td>
<td width="205"> </td>
</tr>
<tr>
<td height="197"> </td>
<form action=""/>
<td valign="top">
<table width="341" border="1">
<!--DWLayoutTable-->
<tr>
<td width="111" height="23"><div align="center"><strong>Ingrediente</strong></div></td>
<td width="64"><div align="center"><strong>prezzo</strong></div></td>
<td width="144" valign="top"><div align="center"><strong>quantità</strong></div></td>
</tr>
<tr>
<td height="26">Patate</td>
<td><input name="prPatate" type="hidden" value="0.50" />0,50</td>
<td valign="top"><input name="Patate" type="text" onChange="totale(this)" value="0" size="3" maxlength="3"/></td>
</tr>
<tr>
<td height="26">Uova</td>
<td><input name="prUova" type="hidden" value="0.08" />0,08</td>
<td valign="top"><input name="Uova" type="text" onchange="totale(this)" value="0" size="3" maxlength="3"/></td>
</tr>
<tr>
<td height="26">Peperoni</td>
<td><input name="prPeperoni" type="hidden" value="0.60" />0,60</td>
<td valign="top"><input name="Peperoni" type="text" onChange="totale(this)" value="0" size="3" maxlength="3"/></td>
</tr>
<tr>
<td height="26">Carciofi</td>
<td><input name="prCarciofi" type="hidden" value="3.20" />3,20</td>
<td valign="top"><input name="Carciofi" type="text" onChange="totale(this)" value="0" size="3" maxlength="3"/></td>
</tr>
<tr>
<td height="26">Spaghetti</td>
<td><input name="prSpaghetti" type="hidden" value="0.85" />0,85</td>
<td valign="top"><input name="Spaghetti" type="text" onChange="totale(this)" value="0" size="3" maxlength="3"/></td>
</tr>
<tr>
<td height="26"></td>
<td><strong>Totale</strong></td>
<td valign="top"><input name="prztotale" type="text" value="0" readonly /></td>
</tr>
</table></td>
</tr>
<tr>
<td height="186"> </td>
<td> </td>
<td> </td>
</tr>
</table>
</body>
</html>