Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Альтернатива eval() (https://javascript.ru/forum/misc/53421-alternativa-eval.html)

Satansoft 03.02.2015 17:59

Альтернатива eval()
 
В input вводится строка типа ((22-8)*2)/4 и нужно вычислить её результат. Использовал eval(), но метод неудовлетворителен и нужна альтернатива.

ruslan_mart 03.02.2015 18:49

Если боишься, что кто-нибудь впишет в поле скрипт, то просто фильтруй данные.

http://learn.javascript.ru/play/koD4sb

<!DOCTYPE HTML>
<html>
  <head></head>
  <body>
    <input id="myInput" type="text">
    <input id="myButton" type="button" value="Вычислить">

    <script type="text/javascript">
      	myInput.oninput = function() {
    		this.value = this.value.replace(/[^\d()*\/+-]+/g, '');
		};

		myButton.onclick = function() {
          	var result;
          	try {
            	result = eval(myInput.value);
          	}
          	catch(e) {
            	result = 'Неконкретный пример';
          	}
          	alert(result);
		};
    </script>

  </body>
</html>

ksa 03.02.2015 20:22

Цитата:

Сообщение от Satansoft
нужна альтернатива

Переводи в польскую запись, потом вычисляй...


Часовой пояс GMT +3, время: 14:42.