我有一个输入类型=文本,我将其值与另一个已知值进行比较。当用户输入整数或浮点数时,它的效果很好。但是,如果用户输入12/297或12 + 9的计算,我想执行计算,然后将结果与已知值进行比较。有关如何做到这一点的任何建议。
输入字段只是
<input type="text" id="A1">
将值作为float获取的代码是:
parseFloat(document.getElementById("A1").value
我试过将值作为字符串并试图操纵但没有运气。此外,我尝试在操作符号上尝试解析为字符串,然后将操作应用于字符串的每个部分,但这对于一个小问题来说是一项巨大的工作,因此必须有一个更好的解决方案。
由于
答案 0 :(得分:1)
您可以对输入值使用javascript eval函数。这会将文本评估为javascript代码。 例如,下一个语句产生值7:
eval("2 + 5")
或您的例子:
eval(document.getElementById("A1").value)
答案 1 :(得分:1)
忘记eval
,这比它的价值更麻烦。
您应该解析字符串并以正确的顺序执行数学表达式,这可能是一个非常大的算法,具体取决于您的需要。我会把实现留给你,但在很高的层次上它会像这样:
*
和/
等。如果您需要(
和)
的支持,则会使事情变得更复杂。简单示例:[10, *, 10, /, 10]
是您的数组。您搜索*
和/
,然后找到1
的第一个索引*
。您申请arr[1-1] * arr[1+1]
,新结果为[100, /, 10]
。你继续等等。
当然有很多可能的方法,但最重要的是:它不是一个“小问题”,“很多工作”是非常相对的。
答案 2 :(得分:0)
因为这个问题你应该使用eval
,这不是安全的事情。但是您可以在此操作之前清理输入字符串:
var expression = document.getElementById("A1").value;
var saveExpression = expression.replace(/[^-()\d/*+.]/g, '');
console.log(eval(saveExpression ));