我需要对动态字符串执行计算。
我将从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);
答案 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);