jquery计算动态方程

时间:2015-12-02 15:49:06

标签: javascript jquery

我需要对动态字符串执行计算。

我将从db命名规则到ajax得到一个等式。 规则可能包含与+, - ,*,/,%等运算符的等式。

如何进行此计算?

  for (var i = 0; i < rules.length; i++) {
          var rule = rules[i].rule; // may contain $structurename1$*$structurename2$/$structurename3$ like this
          $('form :input[type="text"]').each(function(index,value){
              rule = rule.replace('$'+$(this).attr('structurename')+'$',$(this).val());
          });
  }

$('#result').val(rule);

2 个答案:

答案 0 :(得分:1)

Calculate string value in javascript, not using eval

使用上述链接的代码组合:

1。在公式中删除那些不是数字,括号和OR运算符的内容。

2。将公式评估为函数

如果由于无效输入而导致函数错误,则修改为返回NaN。由于步骤1中的RegExp替换,这不应该发生。

function calc(fn) {
  var formula = fn.replace(/[^-()\d/*+.]/g, '');
  try {
    return new Function('return ' + formula)();
  } catch (err) {
    return NaN;
  }
}

<强>样本: https://jsfiddle.net/tjywg716/

答案 1 :(得分:-1)

var str_expression=textbox1.text();
var result=eval(str_expression);
textbox2.text(result);