[英]Calculation on a javascript input type=text
我有一个输入type =文本,我将其值与另一个已知值进行比较。 当用户输入整数或浮点数时,效果很好。 但是,如果用户输入计算结果,则说12/297或12 + 9,我想执行计算,然后将结果与已知值进行比较。 关于如何执行此操作的任何建议。
输入字段很简单
<input type="text" id="A1">
将值作为浮点数获取的代码为:
parseFloat(document.getElementById("A1").value
我尝试过仅将值作为字符串并尝试操纵它,但是没有运气。 我也尝试过尝试在操作符号上将其解析为字符串,然后将操作应用于字符串的每个部分,但这对于一个小问题来说需要大量工作,因此必须有一个更好的解决方案。
谢谢
您可以在输入值上使用javascript eval函数。 这会将文本评估为javascript代码。 例如,下一条语句产生值7:
eval("2 + 5")
或例如:
eval(document.getElementById("A1").value)
忘却eval
,麻烦多于其价值。
您应该解析字符串并以正确的顺序执行数学表达式,根据您的需要,这可能是一个很大的算法。 我将把实现留给您,但总的来说,它将像这样:
*
和/
first等。如果需要对(
和)
支持,它将使事情变得更加复杂。 一个简单的例子: [10, *, 10, /, 10]
是您的数组。 您搜索*
和/
,并找到*
的第一个索引1
。 您应用arr[1-1] * arr[1+1]
,新结果为[100, /, 10]
。 您继续,等等。
当然,有很多可能的方法,但最重要的是:这不是一个“小”问题,而且“很多工作”是相对的。
由于这个问题,您应该使用eval
,这不是安全的事情。 但是您可以在执行此操作之前清除输入字符串:
var expression = document.getElementById("A1").value;
var saveExpression = expression.replace(/[^-()\d/*+.]/g, '');
console.log(eval(saveExpression ));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.