Javascript: Räkna på användarinskriven ekvation

Permalänk
Medlem

Javascript: Räkna på användarinskriven ekvation

Hej

Jag skulle behöva lite hänvisning på vilket det mest effektiva sättet att processa en användarinskriven ekvation är.

Jag har ett fält där jag vill att användaren skall kunna skriva in tex 10*5+3
Sedan vill jag automatiskt räkna ut summan av det och visa i ett annat fält.

Det som användaren skriver in är ju av typen string, så jag måste plocka ut "Math Operators", göra om string till int (funktionen Number()) och sedan stoppa in "Math Operators" igen.

Det jag först tänkte på var att loopa igenom strängen och leta efter + - / * och spara positionerna för dessa och sedan en efter en plocka ut talet och sedan addera, subtrahera, dividera eller multiplicera talen. men jag tycker det känns som en lång väg att gå innan man får till det.

Så jag tänkte höra om det finna något lättare sätt att göra på?

MVH
Niclas

Visa signatur

Har bytt namn från: nulleman ~ Blogg: http://skorpion.se
MacBook Pro: 15.4' ~ 1.83GHz ~ 1512MB RAM ~ 80GB HDD
Medlem i signaturen blodtörstiga Appleanvändare

Permalänk
Medlem

eval("10*5+3")

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem

Ja, där ser man, det var enormt mycket enklare än att loppa igenom strängen för att hitta tecken.

Tack å bock

Visa signatur

Har bytt namn från: nulleman ~ Blogg: http://skorpion.se
MacBook Pro: 15.4' ~ 1.83GHz ~ 1512MB RAM ~ 80GB HDD
Medlem i signaturen blodtörstiga Appleanvändare

Permalänk
Medlem

Om du vill säkra funktionen lite kan du köra en regex på indatan, för att säkerställa att bara godkända tecken finns med. eval() är nämligen en väldigt kraftfull funktion som i princip kan göra vadsomhelst, definiera funktioner och variabler t ex.
Eftersom det handlar om Javascript så går ett sånt här skydd att gå runt väldigt enkelt, men det är ändå snyggare att få ett NaN om man skriver in var foo = function() {while(true) alert("korv")}(); än att det går igenom.. ^^

Visa signatur

Kom-pa-TI-bilitet