如何执行输入框中的JavaScript公式得到对应计算结果
问题解决方法
问题原因
- 当前代码中
document.getElementById("hesap").value拿到的是字符串类型的公式文本,直接赋值只会原样输出文本,不会执行计算逻辑
调整方案
你只需要用eval()函数执行字符串形式的JS表达式即可,调整后的完整JS代码如下:
aaa = 500; bbb = 350; ccc = 25; cal = document.getElementById("hesap").value; // 将字符串公式传入eval执行计算 document.getElementById("calc").value = eval(cal);
计算逻辑验证
执行后计算过程为:(500 + 350)*2 + 25 = 850*2 +25 = 1700 +25 = 1725,和你的预期结果完全一致。
可选优化方案
如果担心eval()的安全风险(开放给外部用户输入的场景下可能存在XSS注入问题),可以改用作用域更可控的new Function写法:
aaa = 500; bbb = 350; ccc = 25; cal = document.getElementById("hesap").value; // 仅在独立函数作用域执行表达式,不会污染全局作用域 document.getElementById("calc").value = new Function('aaa', 'bbb', 'ccc', `return ${cal}`)(aaa, bbb, ccc);
内容的提问来源于stack exchange,提问作者May
相关产品推荐
相关产品推荐

