shop zählt falsch bei altem browser?
Rolf
- javascript
0 Struppi0 Ingo Turski0 Jens Holzkämper0 Rolf
Hallo Leute,
Ich hab da ein kleineres problem und zwar folgendes:
Ich habe eine shop seite,wo man ungewöhnliches kaufen kann.
Das problem ist dass der shop tadellos funktioniert,bei folgenden Typ Browser:
NS4.x,NS7.x,NS6.x,IE5.5,Mozilla1.6...
bei all diesen browser gehts gut.Bei folgendem User agent gehts nicht korrekt:
Mozilla/3.0 (Planetweb/2.606 JS SSL VoIP US; Dreamcast US)
Der zählt als total z.B. wenn ich den film "the new men carpet" bestell total
European Orders Total: 1861.00
Or International orders Total: 1901.00
anstatt
European Orders Total: 35.00
Or International orders Total: 40.00
Woher kann das denn kommen?
Es handelt sich um folgende seite
http://www.tramplefun.com/order1.htm
Man könnte sowas auch mit perl lösen oder,aber das scheint mir zu komplex :-)
Ich hab jetzt mal alles was älter ist als NS4.x oder IE4.x eine warnung ausgeben lassen.
Grüsse
Rolf
Der zählt als total z.B. wenn ich den film "the new men carpet" bestell total
European Orders Total: 1861.00
Or International orders Total: 1901.00
anstatt
European Orders Total: 35.00
Or International orders Total: 40.00
Woher kann das denn kommen?
Es handelt sich um folgende seite
http://www.tramplefun.com/order1.htm
Vielleicht wäre es einfacher uns zu zeigen, wie die Rechnung aussieht und woher die Werte kommen, als uns mühevoll durch deinen Code wühlen zu lassen?
Struppi.
Hi Struppi,
Der zählt als total z.B. wenn ich den film "the new men carpet" bestell total
European Orders Total: 1861.00
Or International orders Total: 1901.00
anstatt
European Orders Total: 35.00
Or International orders Total: 40.00
Woher kann das denn kommen?
Es handelt sich um folgende seite
http://www.tramplefun.com/order1.htmVielleicht wäre es einfacher uns zu zeigen, wie die Rechnung aussieht und woher die Werte kommen, als uns mühevoll durch deinen Code wühlen zu lassen?
Ok ich habe mal den kompletten code in http://www.tramplefun.com/teste.html zusammengefasst.
Es wird zum wert vom video jeweils 5 euro dazugezählt für europa bestellungen und bei ausland nochmal 5.
Es geht auch ums gewicht wenn der wert übersteigt wird dann wird demensprechend dazugezählt
unten der ausschnitt:
Tax = totprice * .00000000;
CTax = 0;
FTax = FloatFormat(Tax,2);
FCTax = FloatFormat(CTax,2);
OCShipping = 5.00;
Shipping = 0;
if(FinalTotWeight >= 0.01 && FinalTotWeight >= 1.00)
{
Shipping = 10;
TmpFinalTotWeight = FinalTotWeight - 10;
TmpFinalTotWeight = TmpFinalTotWeight / 1;
TmpFinalTotWeight = TmpFinalTotWeight * 0.00;
Shipping = TmpFinalTotWeight + Shipping;
if(FinalTotWeight >= 2.20)
Shipping = 15;
if(FinalTotWeight >= 3.00)
Shipping = 20;
}
else if(FinalTotWeight >= 0.10 && FinalTotWeight <= 10)
Shipping = 5;
Gruss
Rolf
Hi,
Shipping = 10;
TmpFinalTotWeight = FinalTotWeight - 10;
Ok, TmpFinalTotWeight wird also auf irgendeinen Wert gesetzt.
TmpFinalTotWeight = TmpFinalTotWeight / 1;
Jetzt wird TmpFinalTotWeight auf denselben Wert gesetzt (Division durch 1), den es bereits hatte. Wozu?
TmpFinalTotWeight = TmpFinalTotWeight * 0.00;
Jetzt wird TmpFinalTotWeight auf 0 gesetzt (Multiplikation mit 0) - wozu so umständlich, wozu die Berechnungen vorher?
Shipping = TmpFinalTotWeight + Shipping;
Shipping wird auf 0 + Shipping gesetzt, also nicht verändert. Das geht auch einfacher.
Die bisherigen Zeilen lassen sich also zu
Shipping = 10;
TmpFinalTotWeight = 0;
zusammenfassen.
cu,
Andreas
Hi,
Shipping = 10;
TmpFinalTotWeight = 0;zusammenfassen.
ja,aber es müssen noch mehr werte sein weil sich der betrag demensprechend ändert
nach gewicht.
Ich habs jetzt mal so geschrieben:
Tax = 0;
CTax = 0;
FTax = FloatFormat(Tax,2);
FCTax = FloatFormat(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 <= 10)
{
Shipping = 30;
}
else if(FinalTotWeight >= 0.10 && FinalTotWeight <= 1.10)
Shipping = 5;
so gehts auch und ohne diesen * 0 multiplikator-versteh jetzt auch nicht für was das gut sein soll ;-)
Gruss
Rolf
Hi,
if(FinalTotWeight >= 1.20 && FinalTotWeight <= 1.70)
{
Shipping = 10;
}
if(FinalTotWeight >= 1.90 && FinalTotWeight <= 2.90)
{
Shipping = 15;
}
if(FinalTotWeight >= 3.00 && FinalTotWeight <= 4.40)
{
Shipping = 20;
}
if(FinalTotWeight >= 4.50 && FinalTotWeight <= 10)
{
Shipping = 30;
}
else if(FinalTotWeight >= 0.10 && FinalTotWeight <= 1.10)
Shipping = 5;
Da sind aber Lücken im System. Was z.B. bei FinalTotWeight = 1.8 oder 1.11?
cu,
Andreas
Hi,
Da sind aber Lücken im System. Was z.B. bei FinalTotWeight = 1.8 oder 1.11?
1.8 oder 1.1 gibts nicht da jedes objekt 0.4 lbs hat
zusammengezählt also möglich 0.8 ,1.2,1.6...
Gruss
Rolf
Hi,
ich hab da nochwas gesehen,was mich interessiert:
kann es eventuell sein dass der eine Browser dies
Ftotprice = FloatFormat(totprice,2);
nicht korrekt interpretiert?
Das heisst doch es soll die ersten zwei zahlen berücksichtigen oder?
Gruss
Rolf
ich hab da nochwas gesehen,was mich interessiert:
kann es eventuell sein dass der eine Browser dies
Ftotprice = FloatFormat(totprice,2);nicht korrekt interpretiert?
Keine Ahnung, hast du die Funktion irgendwo schon gepostet?
Das heisst doch es soll die ersten zwei zahlen berücksichtigen oder?
Nein, ich vermute mal eher, das die Funk. eine Zahl auf 2 stellen rundet.
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.
Struppi.
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
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?
Keine Ahnung, ich kenne den Browser nicht. aber was mir auffällt, die Funktion nach der ich gefragt habe
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);
}
Liefert einen String zurück, von daher kann es sein, das hier der Fehler liegt, wenn du mit einen Wert aus dieser Funktion weiterrechnen willst.
Struppi.
hi,
Keine Ahnung, ich kenne den Browser nicht. aber was mir auffällt, die Funktion nach der ich gefragt habe
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);
}Liefert einen String zurück, von daher kann es sein, das hier der Fehler liegt, wenn du mit einen Wert aus dieser Funktion weiterrechnen willst.
hmmmm,aber ich sehe grade dass diese funktion gar nirgends aufgerufen wird?!
Dann nehm ich die mal raus ;-)
Gruss
Rolf
hi,
Liefert einen String zurück, von daher kann es sein, das hier der Fehler liegt, wenn du mit einen Wert aus dieser Funktion weiterrechnen willst.
oh doch die funktion brauch ich doch ->"Float" aber die umrechnung versteh ich nicht ganz.
Gruss
Rolf
Hi,
die Meldung
"note:the JavaScript of your browser is disabled,but you need it and a cookie accept browser- otherwise you cannot using this order site.Or try the otherorder form"
würde ich aber schon etwas ansprechender und größer ausgeben.
Und bei der Errormeldung für das JS-lose Bestellformular javascript:history.back() ist nun wirklich Blödsinn.
freundliche Grüße
Ingo
Tach,
Mozilla/3.0 (Planetweb/2.606 JS SSL VoIP US; Dreamcast US)
das ist übrigens kein alter sondern eher ein neuer Browser, nämlich der, der zur Spielekonsole Dreamcast gehört.
mfg
Woodfighter
hi,
Mozilla/3.0 (Planetweb/2.606 JS SSL VoIP US; Dreamcast US)
das ist übrigens kein alter sondern eher ein neuer Browser, nämlich der, der zur Spielekonsole Dreamcast gehört.
umso schlimmer dass der nicht zählen kann,wie die anderen üblichen browser ;-)
Gruss
Rolf
P.S.ist eben schon mühsam,wenn jeder browser was anderes tut...beim javascript :-/