hi,
Dein Problem läßt sich schwer lösen, da kaum einer Lust hat in einem Haufen Code rumzuwühlen um eine evtl. auftretendes Problem zu lösen.
Meine Vermutung ist, dass du irgendwo zahlenwerte aus Formularfelder nimmst und diese nicht sinnvoll umgewandelt werden.
Aber ich frage mich warum dann alle browser,opera7,IE5,NS4-NS7,Mozilla1.6 den code verstehen bzw. richtig
interpretieren und der user agent von
Mozilla/3.0 (Planetweb/2.606 JS SSL VoIP US; Dreamcast US) falsch zusammenzählt?
Ist doch javascript 1.0 von daher sollten jedenfalls alle neueren browser den code richtig verstehen :-/
Also ich hab den kompletten code nochmal abgeändert und gekürzt und nochmals getestet mit meinen browsers -> es geht.
Aber vielleicht ,falls Du zeit hast ;-) könntest Du den code mal schnell überfliegen?
Ich post ihn hier unten nochmals(ist doch nicht soviel wie auch schon gelesen):
function ShowInvoice()
{
totprice = 0;
itemlist = 0;
TotQty = 0;
TotWeight = 0;
FinalTotWeight = 0;
document.writeln('<TABLE border="0" cellspacing="4" cellpadding="0">');
document.writeln('<TR><TD align="center"><b>Time in length</b></TD><TD align="center"><b>Film Title</b></TD><TD align="center"><b>Qty</b></TD><TD align="center"><b>Weight</b></TD><TD align=center><b>Price Each</b></TD><TD align="center"><b>Price Total</b></TD></TR><TR><TD colspan="6"><HR NOSHADE></TD></TR>');
for(NumItems = 0; NumItems<MaxCartItems; NumItems++)
{
CookieName = "Cart" +NumItems;
CookieValue = GetCookie(CookieName);
if(CookieValue != null)
{
for(var i = 0;i <= CookieValue.length; i++)
{
// using 0192,0193,0194,0195,0196
if (CookieValue.substring(i,i+1) == '[')
{
itemstart = i+1;
}
else if (CookieValue.substring(i,i+1) == 'À')
{
ID = CookieValue.substring(itemstart, i);
itemstart = i+1;
}
else if (CookieValue.substring(i,i+1) == 'Á')
{
Sdesc = CookieValue.substring(itemstart, i);
itemstart = i+1;
}
else if (CookieValue.substring(i,i+1) == 'Â')
{
Price = CookieValue.substring(itemstart, i);
itemstart = i+1;
}
else if (CookieValue.substring(i,i+1) == 'Ã')
{
Qty = CookieValue.substring(itemstart, i);
itemstart=i+1;
}
else if (CookieValue.substring(i,i+1) == 'Ä')
{
Weight = CookieValue.substring(itemstart, i);
itemstart = i+1;
}
else if (CookieValue.substring(i,i+1) == ']')
{
WeightUnit = CookieValue.substring(itemstart, i);
itemstart = i+1;
TotQty = TotQty + parseInt(Qty);
TotWeight = Weight * Qty;
ItemTotal = 0;
ItemTotal = (eval(Price*Qty));
totprice = totprice + ItemTotal;
FItemTotal = Float(ItemTotal,2);
FTotWeight = Float(TotWeight,2);
ConvertUnit(TotWeight,WeightUnit,'lbs');
ConvertedWeight = NewUnitSize;
FinalTotWeight = FinalTotWeight + NewUnitSize;
FConvertedWeight = Float(ConvertedWeight,2);
document.writeln('<INPUT type="hidden" name="Film" value="'+Sdesc+'">');
document.writeln('<INPUT type="hidden" name="Price '+Qty+' items(s)" value="'+FItemTotal+'">');
document.writeln('<TR><TD><font size="-1">'+ID+'</font></TD><TD><font size="-1">'+Sdesc+'</font></TD><TD align="right"><font size="-1">'+Qty+'</font></TD><TD align="right"><font size="-1">'+FConvertedWeight+' lbs</font></TD><TD align="center"><font size="-1">'+Price+'</font></TD><TD align="right"><font size="-1">'+FItemTotal+'</font></TD></TR>');
}
}
}
}
Ftotprice = Float(totprice,2);
document.writeln('<input type=hidden name="Totals" value="-----------------------------------------------">');
document.writeln('<TR><TD colspan="5"><b>Sub Total</b></TD><TD align="right"><b>'+Ftotprice+'</b></TD></TR><TR><TD colspan="6"><HR NOSHADE></TD></TR>');
document.writeln('<INPUT type="hidden" name="Sub Total" value="'+Ftotprice+'">');
Tax = 0;
CTax = 0;
FTax = Float(Tax,2);
FCTax = Float(CTax,2);
OCShipping = 5.00;
Shipping = 0;
if(FinalTotWeight >= 1.20 && FinalTotWeight <= 1.70)
{
Shipping = 10;
TmpFinalTotWeight = 0;
Shipping = TmpFinalTotWeight + Shipping;
}
if(FinalTotWeight >= 1.90 && FinalTotWeight <= 2.90)
{
Shipping = 15;
}
if(FinalTotWeight >= 3.00 && FinalTotWeight <= 4.40)
{
Shipping = 20;
}
if(FinalTotWeight >= 4.50 && FinalTotWeight <= 20)
{
Shipping = 30;
}
else if(FinalTotWeight >= 0.10 && FinalTotWeight <= 1.10)
Shipping = 5;
FShipping = Float(Shipping,2);
FOCShipping = Float(OCShipping,2);
FFinalTotWeight = Float(FinalTotWeight,2);
document.writeln('<TR><TD colspan="3"><b>Weight</b></TD><TD align=right>'+FFinalTotWeight+' lbs</TD></TR>');
document.writeln('<TR><TD colspan="5"><b>Shipping</b></TD><TD align=right>'+FShipping+'</TD></TR>');
document.writeln('<INPUT type="hidden" name="Shipping" value="'+FShipping+'">');
document.writeln('<INPUT type="hidden" name="Shipping outside of Europe" value="'+FOCShipping+'">');
NatFGrandTotal = Float(totprice + Shipping,2);
ONatFGrandTotal = Float(totprice + Shipping + OCShipping,2);
FGrandTotal = Float(totprice + Shipping,2);
document.writeln('<TR><TD colspan="5"><b>Sales Tax</b></TD><TD align="right">'+FTax+'</TD></TR>');
document.writeln('<INPUT type="hidden" name="Sales Tax" value="'+FTax+'">');
document.writeln('<TR><TD colspan="6"><HR NOSHADE></TD></TR><TR><TD colspan="5"><b><font color="#000080"><Ul>TOTAL</font></b></TD><TD align="right"><font color="#000080"><b>Euro '+FGrandTotal+'</b></font></TD></TR>');
document.writeln('<INPUT type="hidden" name="Total Amount" value=" '+FGrandTotal+'">');
document.writeln('<INPUT type="hidden" name="Totals in currency Euro" value="------------------------------">');
document.writeln('<INPUT type="hidden" name="European Orders Total" value="'+NatFGrandTotal+'">');
document.writeln('<INPUT type="hidden" name="EordTot" value="'+NatFGrandTotal+'">');
document.writeln('<INPUT type="hidden" name="Or International orders Total" value="'+ONatFGrandTotal+'">');
document.writeln('<INPUT type="hidden" name="IordTot" value="'+ONatFGrandTotal+'">');
document.writeln('</TABLE>');
document.writeln('<INPUT type="hidden" name="Deliver to / Empfaenger" value="------------------------------">');
}
function Float(expr,decplaces)
{
var str = "" + Math.round(eval(expr) * Math.pow(10,decplaces));
while(str.length <= decplaces)
{
str = "0" + str;
}
var decpoint = str.length - decplaces;
return str.substring(0,decpoint) + "." + str.substring(decpoint,str.length);
}
lbs_factor = 0.0025; // ounces to pounds
var UnitSize; // weight number being converted
var OldUnit; // converting from
var NewUnit; // converting to
var NewUnitSize; // new weight in new unit
function ConvertUnit(UnitSize,OldUnit,NewUnit)
{
// possible units
// lbs
NewUnitSize = 0;
TmpUnitSize = 0;
// if not oz, convert to oz first
if(OldUnit == 'lbs')
{
TmpUnitSize = UnitSize / lbs_factor;
}
else
{
// if oz, keep as is
TmpUnitSize = UnitSize;
}
// since TmpUnitSize is now oz, convert to NewUnit;
if(NewUnit == 'lbs')
{
NewUnitSize = TmpUnitSize * lbs_factor;
}
}
..............end
Gruss
Rolf