(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: [code lang=javascript]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!");[/code]
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:
~~~javascript
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!)