eval ist nur dann nötig, wenn du zur Laufzeit JS Code erzeugst.
Korrektur: wenn ich zur Laufzeit JS Code _ausführen_ will. Erzeugen ist irrelevant
Mittlerweile habe ich verstanden was du wilst, dank deiner nebulösen Beschreibung war das gar nicht so einfach. Du willst zur Laufzeit einen String mit JS erzeugen und ausführen. Das ist genau das was ich gesagt habe und das ist auch genau der einzige Grund wann eval einen Sinn macht.
Was willst du machen?
Siehe erster Satz. Was ich _nicht_ will ist
a) JavaScript ausführen.
doch willst du.
b) einen kompletten Lexer/Parser selbst schreiben.
ok, das habe ich jetzt kapiert.
Du willst offensichtlich einen Formularchecker bauen, wo du Variabel die Vergleiche übergeben kannst. Das ganze dürfte so aussehen.
function checkField(was, vergleich)
{
if(!was) return alert('Vergleich nicht möglich:' + was);
var wert = was.value;
// ersetzen:
var string = vergleich.replace(/[WERT]/g, wert);
var ergebnis = eval(string);
alert(ergebnis);
}
checkField(document.forms['Formular'].elements['xxx'], "'[WERT]' == 'Firma' || '[WERT]' == 'Familie'");
checkField(document.forms['Formular'].elements['yyy'], "'[WERT]' == 'Firma' || '[WERT]' == 'Familie'");
Mit einem kleinen Beispiel mit dem man hätte nachvollziehen können was du wirklich willst, wären diese ganzen Mißverständnisse nicht nötig gewesen.
Struppi.