2011-12-29 4 views
0

Я пытаюсь сделать график простой функции y=k*x+b.
Пользователь вводит функцию в поле ввода, например:Передача HTML-формы формы ввода для расчета

1/3 * х + 3

и когда он/она нажимает кнопку отправки, функция JavaScript должен принять это входное значение в качестве фактической последовательности расчета и присвоить переменный к ней (нужно только, чтобы получить определенные значения Y здесь, так что переменные й имеют свои пределы):

for (x=1;x<=40;x++) 
{ 
    result = window.document.menu.inputFunction.value; 
} 

Приведенные выше код не работает. Неудивительно, почему - я просто начинающий. Однако, это действительно сложнее, чем кажется, или я что-то упускаю? В какой-то момент я рассматривал попытки регулярных выражений, но у меня болит голова, даже думая об их использовании.

Любые идеи?

ответ

2

Вы можете eval его:

result = eval(window.document.menu.inputFunction.value); 

Есть, очевидно, некоторые ограничения этого подхода:

  • Пользователь должен ввести действительный яваскрипт выражения
  • Пользователь должен использовать x в качестве имени переменного потому что это то, что вы используете в цикле
  • Код уязвим, потому что пользователь может ввести nd выполнить любое выражение javascript, которое ему нравится

Для более надежного решения вы можете использовать javascript mathematical expression evaluator.

+0

Спасибо за ваш ответ. Этот график будет использоваться только в автономном режиме, поэтому я не думаю, что безопасность под вопросом. Кроме того, здесь нет баз данных SQL, поэтому риск использования SQL-инъекций тоже ушел. И да, я собираюсь добавить всплывающие окна (подсказки), чтобы информировать пользователя о синтаксисе. Должен ли я фильтровать и проверять форму? Что может пойти не так? Я имею в виду, какой код мог выполнить пользователь? Это может повредить сервер, если граф будет загружен в один? – Onion

+0

Спасибо за ссылку, но в образовательных целях я хотел бы сам поработать над этим кодом javascript. – Onion