javascript输入类型=文本的计算
我有一个输入类型=文本,我将其值与另一个已知值进行比较。当用户输入整数或浮点数时,效果非常好。但是,如果用户输入计算,比如12/297或12+9,我希望执行计算,然后将结果与已知值进行比较。关于我将如何做的任何建议 输入字段是简单的javascript输入类型=文本的计算,javascript,Javascript,我有一个输入类型=文本,我将其值与另一个已知值进行比较。当用户输入整数或浮点数时,效果非常好。但是,如果用户输入计算,比如12/297或12+9,我希望执行计算,然后将结果与已知值进行比较。关于我将如何做的任何建议 输入字段是简单的 <input type="text" id="A1"> 我尝试过将值作为字符串并尝试对其进行操作,但没有成功。此外,我还尝试将其解析为操作符号上的字符串,然后将该操作应用于字符串的每个部分,但这对于一个小问题来说是一项巨大的工作,因此必须有一个更好的解
<input type="text" id="A1">
我尝试过将值作为字符串并尝试对其进行操作,但没有成功。此外,我还尝试将其解析为操作符号上的字符串,然后将该操作应用于字符串的每个部分,但这对于一个小问题来说是一项巨大的工作,因此必须有一个更好的解决方案
谢谢您可以对输入值使用javascript eval函数。这将把文本作为javascript代码进行计算。 例如,下一条语句生成值7:
eval("2 + 5")
或者举个例子:
eval(document.getElementById("A1").value)
因为对于这个问题,您应该使用
eval
,这不是一件安全的事情。但您可以在执行此操作之前清除输入字符串:
var expression = document.getElementById("A1").value;
var saveExpression = expression.replace(/[^-()\d/*+.]/g, '');
console.log(eval(saveExpression ));
忘了
eval
,它的麻烦比它的价值还多
您应该解析字符串并以正确的顺序执行数学表达式,这可能是一个很大的算法,具体取决于您的需要。我将把实现留给您,但在较高的层次上,它将是这样的:
*
和/
等。如果您需要(
和)
的支持,这将使问题更加复杂[10,*,10,/,10]
是您的数组。搜索*
和/
,找到*
的第一个索引1
。应用arr[1-1]*arr[1+1]
,新结果是[100,/,10]
。你继续等等
当然有很多可能的方法,但底线是:这不是一个“微小”的问题,“大量工作”是非常相关的。你能展示“大量工作”的工作代码吗?问题并不像你想象的那么微小。实际上,您必须在那里解析表达式,这意味着读取字符串并确定操作数和运算符。您可以尝试使用
eval
,但是为了保证一切安全,您还需要进行更多的编程……使用eval
将假定用户输入的不是真正的“计算”,而是JavaScript“计算”。对于大多数用户来说,这是一个很大的假设。你能教你的用户如何使用Math对象吗?大量的工作是指这样一个事实,从逻辑上讲,在数学运算中解析输入对我来说没有意义,然后根据解析运算是什么来重构运算+,-,*,/。。很适合使用外部库为您解析表达式!如果您要使用eval
方法,请至少发出安全警告。谢谢,我将尝试此方法,安全性并不重要,因为在封闭系统中使用受到限制。我不会使用eval,以防它在某个时候需要公开。你不能用一个正则表达式来保证eval的安全。我同意你的答案是正确的,但是出于我的需要,eval将用于我现在需要的个人应用程序,因此更好的方法将不得不等待。坦斯克
var expression = document.getElementById("A1").value;
var saveExpression = expression.replace(/[^-()\d/*+.]/g, '');
console.log(eval(saveExpression ));