2015-12-02 65 views
2

我需要对动态字符串进行计算。jquery计算动态方程

我将通过ajax从db命名规则中获得一个方程。 该规则可能包含与运算符(例如+, - ,*,/,%)的等式。

如何执行此计算?

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

请向我们提供您所做但这样我们就可以提高其结合在一起的代码。 – pistou

+0

不安全,但'eval(“(10 + 5)* 2”)';这本身是安全的,但是当你用一个用户输入的变量值替换它时,你可以通过该eval访问它们来运行代码。 –

+0

我有这样的输入字符串**“70 + 30”**,我只需要结果应该是“100” –

回答

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

Calculate string value in javascript, not using eval

从上述链路使用的码组合:

1.在式地带任何那不是数字,括号,OR运算符。

2. evalulate式作为函数

改性返回NaN如果由于功能错误输入无效。不应因RegExp更换步骤发生1

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

DEMO: https://jsfiddle.net/tjywg716/