05. oktober 2006 - 18:33Der er
6 kommentarer og 1 løsning
eval() og regne funktion
Hej eksperter
Jeg har lavet et lille script, hvor man kan beregne simple matematiske udregninger.
Jeg har benyttet funktionen eval(), der så lægger sammen, trækker fra osv.
Mit problem er, at hvis eval() ikke forstår udtrykket (f.eks. fordi der er tekst med) melder hele siden javascript-fejl - det dumme lille gule ikon i IE. Kan man ikke lave en lille kontrol-funktion, så siden i stedet kommer med en fejl-meddelelse til brugeren, hvis der er fejl i feltet?
Findes der for øvrigt funktioner, der er bedre egnet til formålet end eval()?
Til det andet kan svares, at du i så fald skal parse de indtastede stykker (og det vil være nødvendigt, hvis du skal bruge specielle funktioner som kvadratrod, potensopløftning, Π, sinus m.m.fl. ...
-- der er faktisk en try/catch-konstruktion i javascript (på det punkt har den faktisk arvet det samme som Java, som ellers ikke har noget med js at gøre !-)
F.eks. sådan:
//udgangspunkt, at indtastningen ligger i et tekstfelt i en form, hvor også en knap findes: //<input type="button" value="Beregn udtryk" onclick="udregn(this.form);return false;"> function udregn(f){ try{ var udtryk = f.indtastUdtryk.value; alert("Beregningen af udtrykket:\n\n" + udtryk + "\n\nGiver resultatet: " + eval(udtryk)); }catch(e){ alert("Der er fejl i udtrykket\n\nJavascript-fejl:\n\n" + e.message); } }
Det var min egen fejl. Jeg havde lagt submit-kaldet på et billede og så forstod den sjovt nok ikke 'this.form' kommandoen. Lavede den bare om til 'document.regn' og kaldte formen for 'regn'.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.