Sonderbarer Bug beim IE5 und OOP?
Laurin
- javascript
Hi Kollegen!
Mein IE5 macht komische Dinge - aber nur beim Erstenmal bei jedem Objekt!
Ich hab mir ein Objekt definiert. Wenn ich jetzt addiere dann wird der 1. Operand zuerst mal mit 10 multipliziert.
Mich würde interessieren ob Das ein lokaler Schaden bei mir ist, ob ich in mit dem Code (keine Fehlermeldungen) Schweinekram gebaut hab oder ob ich mich bei Pig Billy bedanken darf. Testmöglichkeit: Siehe URL.
Mfg - Laurin.
Die relevanten Daten:
Objektdefinition:
function CharO(Id,OrtX,OrtY,BewX,BewY)
{
this.Id = Id;
this.OrtX = OrtX;
this.OrtY = OrtY;
this.BewX = BewX;
this.BewY = BewY;
function Bug()
{
Ax = Wo.OrtX;
Bx = Ax + 1;
Bx = Bx - 1;
alert("Gerechnet mit dem Objektfeld: (("+Ax+" + 1) - 1) = "+Bx+" meint zumindest Javascript...");
if(Ax > 0)
alert("Ein Tip: Negative Zahlen sind noch lustiger...");
if(Ax != Bx)
alert("Hinweis: Dieses falsche Rechenergebnis widmet Ihnen Microfoft... ");
}
this.Bug = Bug;
}
Das Objekt selber:
var Wo = new CharO("W","20","20","0","0");
Der Workaround - statt Addition folgende Funktion einsetzen:
function DoAdd(a,b)
{
var t = a + 0;
var c = t / a;
if(c != 1)
{
alert("Val = "+a+" Korr = "+c);
t = b * c;
t = a + t;
t = t / c;
return t;
}
else
return(a + b);
}
Hallo,
Ich hab mir ein Objekt definiert. Wenn ich jetzt addiere dann wird der 1. Operand zuerst mal mit 10 multipliziert.
Objekte kann man AFAIK nicht addieren ;-)
Das Objekt selber:
Das hast du doch eigentlich schon beschrieben. Jetzt kommt nur noch eine Instanz des Objekts.
So müsste das ganze besser funktionieren:
entweder:
var Wo = new CharO("W",20,20,0,0);
statt
var Wo = new CharO("W","20","20","0","0");
oder
Bx = parseInt(Ax) + 1;
statt
Bx = Ax + 1;
Viel Glück,
Robert