Quote:
Originally Posted by Ix-Chel
Hi,
ich weis das diese Frage schon öfter gestellt wurde. Ich habe auch diverse Threats durchgeschaut aber nirgends eine vernünftige Antwort gelesen.
Meine Frage bzw. mein Problem:
Ich habe fast jeden dritten Run folgende Fehlermeldung: TypeError:_item is undefined
Gibt's für dieses Problem eine Lösung ? Ich wäre euch unendlich dankbar.
|
Das bezieht sich auf meine Version mit dem aktuellsten Update?
Wenn ja, bitte eine möglichst präzise Fehlermeldung.
Wenn nein, bist du hier falsch. :p
Quote:
Originally Posted by jannimanni
[Only registered and activated users can see links. Click Here To Register...]
ich hab keine ahnung davon, wär aber meine erste idee ^^
|
Und inwiefern ist deine erste Idee sinnvoll? :p
monster ist das Objekt, von da aus wird über den Punktoperator auf die Eigenschaft
name referenziert, welche für sich wieder ein Objekt vom Typ String ist, sodass von dort aus dann die Methode
toLowerCase() aufgerufen wird.
Was ich gerade oben beschrieben habe sieht in JavaScript so aus:
Code:
monster.name.toLowerCase();
Quote:
Originally Posted by Aceridos
Dann müsste es ja in jedem Run kommen, behaupte ich :p
Ich wart mal auf Muddy^^ aber dank dir
/edit: Ok, gerade wieder der Fehler, das Script ist definitiv nicht zuende
|
Um das da oben mal ein bisschen auszuführen:
In dem Fall ist - aus welchen Gründen auch immer - die Eigenschaft
name nicht definiert.
Das Problem ist, dass von dort aus jetzt die Methode
toLowerCase() aufgerufen werden soll. Diese ist aber nur für Objekte vom Typ String definiert, deshalb wirft die Laufzeitumgebung eine Exception.
Erstaunlicherweise ist das auch genau das, was die Fehlermeldung aussagt. :)
Wie dem auch sei, wir wollen natürlich eine Lösung finden, auch wenn es mich etwas wurmt, dass ich nicht genau weiss, ob nun
monster, also das Objekt selber undefiniert ist, oder nur die Eigenschaft
name.
Zur Lösung des Problems erweitern wir mal den Blickpunkt auf die ganze Funktion, eine einzelnen Zeile sagt ohnehin wenig aus, man braucht immer den Kontext.
Diese sieht in der ursprünglichen Version so aus:
Code:
[B][I][Color=Navy]function[/Color][/I][/B] MWA_UseStaticOnTarget(monster)
{
[B][I][Color=Navy]if[/Color][/I][/B](MWConfig_StaticTargets.length == [Color=Red]0[/Color])
[B][I][Color=Navy]return true[/Color][/I][/B];
[B][I][Color=Navy]if[/Color][/I][/B](me.d[B][I][Color=Navy]if[/Color][/I][/B]f == [Color=Red]0[/Color])
[B][I][Color=Navy]return false[/Color][/I][/B];
[B][I][Color=Navy]for[/Color][/I][/B]([B][I][Color=Navy]var[/Color][/I][/B] i = [Color=Red]0[/Color]; i < MWConfig_StaticTargets.length; i++)
{
[B][I][Color=Navy]if[/Color][/I][/B](MWConfig_StaticTargets[i] == monster.classid || typeof MWConfig_StaticTargets[i] == [Color=Gray]"string"[/Color] && monster.name.toLowerCase().indexOf(MWConfig_StaticTargets[i].toLowerCase()) > -1)
[B][I][Color=Navy]return true[/Color][/I][/B];
}
[B][I][Color=Navy]return false[/Color][/I][/B];
}
Die Funktion wird jetzt einfach wie folgt abgeändert:
Code:
[B][I][Color=Navy]function[/Color][/I][/B] MWA_UseStaticOnTarget(monster)
{
[B][I][Color=Navy]if[/Color][/I][/B](MWConfig_StaticTargets.length == [Color=Red]0[/Color])
[B][I][Color=Navy]return true[/Color][/I][/B];
[B][I][Color=Navy]if[/Color][/I][/B](me.d[B][I][Color=Navy]if[/Color][/I][/B]f == [Color=Red]0[/Color] || !monster || !monster.name)
[B][I][Color=Navy]return false[/Color][/I][/B];
[B][I][Color=Navy]for[/Color][/I][/B]([B][I][Color=Navy]var[/Color][/I][/B] i = [Color=Red]0[/Color]; i < MWConfig_StaticTargets.length; i++)
{
[B][I][Color=Navy]if[/Color][/I][/B](MWConfig_StaticTargets[i] == monster.classid || typeof MWConfig_StaticTargets[i] == [Color=Gray]"string"[/Color] && monster.name.toLowerCase().indexOf(MWConfig_StaticTargets[i].toLowerCase()) > -1)
[B][I][Color=Navy]return true[/Color][/I][/B];
}
[B][I][Color=Navy]return false[/Color][/I][/B];
}
Dadurch wird nun vorher überprüft, ob entweder das Objekt selber, oder die Eigenschaft
name nicht definiert sind.
Ist dies der Fall, wird die Funktion abgebrochen, bevor es überhaupt zu einer Laufzeitexception kommen kann.
Einfach, oder? :)
Lg
Muddy