Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2007 Teil von Februar

SELFHTML Forumsarchiv
Eigenschaft eines Objektes vorhanden?

Informationsseite
  1. Seite (JAVASCRIPT) Eigenschaft eines Objektes vorhanden? von mormel, 28. 02. 2007, 12:08
nach unten

Eigenschaft eines Objektes vorhanden?

Die folgende Nachricht zum Thema stammt von: mormel, 28. 02. 2007, 12:08

Hallo,

dies wird dynamisch in eine Datei geschrieben:

var artikel = new Object();
artikel.A101 = '1.05';
artikel.A102 = '0.95';
artikel.A103 = '1.00';
artikel.A104 = '2.50';
// ....


also ein Object mit Eigenschaft Artikelnr und zugehörigem Preis.

In einem Formular auf der Seite kann eine Bestellung eingegeben werden. Man gibt Anzahl und Artikelnr ein und dementsprechend soll die aktuelle Summe angezeigt werden. Das funktioniert - solange man eine gültige Artikelnr in das Feld eingibt:

(Ausschnitt vereinfacht)
sum += document.bestellung.anzahl.value * artikel.eval(document.bestellung.artikelnr.value);

Nun habe ich folgendes nach google-Recherche versucht:

isDefined = function(variable)
{
      return this[variable] === undefined ? false : true;
};

if(isDefined(artikel.eval(document.bestellung.artikelnr.value)))
      sum += artikel.eval(document.bestellung.artikelnr.value);
else
      alert("ungültige Artikelnummer!");


aber dann kommt folgende Fehlermeldung:
XYZ001(Beispiel für ungültige ArtNr) ist nicht vorhanden (Firefox Javascript-Konsole).

Wie kann ich überprüfen, ob die Artikelnummer im Object artikel enthalten ist?

Danke und Gruß
mormel

nach obennach unten

Eigenschaft eines Objektes vorhanden?

Die folgende Nachricht zum Thema stammt von: Struppi, 28. 02. 2007, 12:23

»» (Ausschnitt vereinfacht)
»» sum += document.bestellung.anzahl.value * artikel.eval(document.bestellung.artikelnr.value);

Wozu eval? Das hier an der Stelle falsch und überflüssig.

»» Nun habe ich folgendes nach google-Recherche versucht:
»»
»» isDefined = function(variable)
»» {
»»       return this[variable] === undefined ? false : true;
»» };

Erstmal ist diese Schreibweise so zwar nicht falsch aber unübersichtlich, du machst nichts andere als eine normale Funktion erstellen function isDefined() und innerhalb dieser Funktion ist this gleich window. Du willst also Wissen ob eine Variabel definert ist. Das geht zwar manchmal so, aber undefined ist nicht in allen Browsern ein Schlüsselwort, daher bevorzuge ich diese Variante: function isDefined(w){ return typeof w != 'undefined'; }

»» if(isDefined(artikel.eval(document.bestellung.artikelnr.value)))
»»       sum += artikel.eval(document.bestellung.artikelnr.value);
»» else
»»       alert("ungültige Artikelnummer!");


Ob ein Objekt eine Eigenschaft hat läßt sich einfach mit objekt['eigenschaft'] überprüfen, dazu ist ein test auf defined erstmal gar nicht nötig.

also in etwa so:
var art_nr = document.bestellung.artikelnr.value;

if(artikel[art_nr])
sum += artikel[artikel[art_nr]];
else
alert("ungültige Artikelnummer!")


Struppi.
--
Javascript ist toll (Perl auch!)

nach obennach unten

Eigenschaft eines Objektes vorhanden? - Danke!

Die folgende Nachricht zum Thema stammt von: mormel, 28. 02. 2007, 12:50

Hallo Struppi,

das eval lag mir auch etwas quer im Magen - danke für Deine Ausführungen, jetzt funktioniert es!

Gruß
mormel

nach oben
Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2007 Teil von Februar

© 1998-2006 Seite Impressum, Software: Classic Forum