Stefan Becker wrote:
Quote:
ich habe ein Problem mit einer Object Abfrage/Beschreibung.. Wenn ich
ein Object abfrage, welches noch nicht existiert, wird mir aber
angegeben, dass diese existiert.
var besetzte_posten = {}; //Globales Object |
Nein, das ist eine (mglw. globale) Variable, die eine Referenz zu einem
Object-Objekt speichert. Globale Variablen sind Eigenschaften des
*eingebauten* Globalen Objekts, welches nur über `this' im globalen
Ausführungskontext zuverlässig referenzierbar ist.
Quote:
function GruppenstaerkeBerechnen(funktion,posten,fahrzeug)
{
[..]
var tmp2 = fahrzeug+'_'+posten; // Ist es die richtige Auswahl
if(typeof besetzte_posten.tmp2 == "undefined") //Hier wird gestestet ob
das Object bereits existiert |
Nein, es wird getestet, ob der Lesezugriff auf die tmp2-Eigenschaft des mit
`besetzte_posten' referenzierten Objekts einen Wert liefert, der den Typ
Undefined hat. Das ist dann der Fall, wenn die Eigenschaft den Wert
`undefined' hat oder wenn das Objekt diese Eigenschaft nicht hat.
Du suchst
if (typeof besetzte_posten[tmp2] == "undefined")
{
// ...
}
In neueren Implementationen funktioniert in Deinem Fall auch
if (besetzte_posten.hasOwnProperty(tmp2))
{
// ...
}
Siehe
http://PointedEars.de/es-matrix Quote:
[...]
if(document.getElementById(fahrzeug+'_'+posten).va lue == '-') |
Wenn document.getElementById(fahrzeug+'_'+posten) keine Objektreferenz
liefert, führt diese Zeile zu einem Laufzeitfehler:
http://www.w3.org/TR/DOM-Level-3-Cor...ml#ID-getElBId
Daher:
var o = document.getElementById(fahrzeug + '_' + posten);
if (o)
{
if (o.value == '-')
{
// ...
}
else
{
// ...
}
}
Quote:
[...]
delete besetzte_posten.tmp2; // Object löschen |
Nein, hier wird die tmp2-Eigenschaft des mit `besetzte_posten'
referenzierten Objekts gelöscht. Ein Objekt wird nur dann gelöscht, d.h.
der dafür reservierte Speicher freigegeben, wenn es nicht mehr referenziert
wird. Selbst besetzte_posten[tmp2] referenziert in Deinem Fall kein Objekt,
sondern einen primitiven string-Wert, nämlich "bar".
Bitte lies
http://developer.mozilla.org/en/docs/JavaScript ff.
Ausserdem ist Dein Quelltext nur mit Mühe lesbar. Quelltext sollte mit zwei
oder vier Leerzeichen je Ebene eingerückt werden, und Vorkommentierung ist
besser als Nachkommentierung.
PointedEars
--
Wenn Dein Browser apply nicht kennt, dann mußt Du den Browser wechseln.
Man kann den Appendix nicht mit dem Bulldozer operieren und sich dann
über ausgefranzte Narben beklagen, obwohl bekannt ist, daß dafür
chirurgisches Besteck erforderlich ist. -- Georg Maaß in dcljs