Hallo,
ich habe ein Textfeld, in welches man Formeln in der Form 16*(2+5.6) eingeben kann. Bei onBlur wird der Wert mittels "eval()" berechnet. Das ganze sieht im Prinzip wie folgt aus.
<input name="fld1" type="text" id="fld1" onBlur="this.value = eval(this.value)">
Nun möchte ich aber auch überprüfen, ob der eingegebene Wert auch ein berechenbarer Ausdruck ist. Dafür habe ich aber überhaupt noch keine Idee und wäre dankbar, wenn mir jemand mit einem Lösungsansatz auf die Sprünge helfen könnte.
Außerdem habe ich hier im Forum des öfteren gelesen "eval() ist böse" und läßt sich zu 99.9% vermeiden. Bezieht sich das auch auf meine Art der Verwendung von "eval()"? Und wenn ja, welche Alternativen habe ich?
eval ist zu 99.99999999% unnötig und eval ist evil.
weil es
a.) langsamer ist
b.) zu unvorhersehbaren Ergebnissen führen kann
und
c.) schwerer zu debuggen ist.
und du hast genau einen Fall in dem eval unvermeindbar ist. eval ist dafür gedacht zur Laufzeit dynamischen JS code auszuführen und das ist genau das was du willst.
Deine Möglichkeit wäre (evtl.) den Fehler abzufangen.
window.onerror = errHandler;
funtion errHandler(msg, file, zeile)
{
return true;
}
Das return true; verhindert, das der normale Error handler ausgeführt wird.
Struppi.