这显然是完美的:<script>alert(5*8-4)</script>
但我需要解决输入框里的任何问题。
下面是我想做的事情:我会把输入的值输入到一个变量中。那我就用
document.write("<script>alert("+theinputvalue+")<script>");或者这样做:
var string="<script>alert("+theinputvalue+")<script>";document.write(string);但什么都不管用。
有可能这样做吗?如果没有,告诉我可以使用什么简单的其他系统。
最后,我将使用它来绘制这样的线条:
var canvas = document.getElementById("canvas"),
ctx = canvas.getContext("2d")
for(var x=-100; x<100; x=x+.2){
y = .1*(x*x)
ctx.fillRect(x+50, -1*y+50, 2, 2);
}http://jsfiddle.net/KGgq4/
发布于 2014-04-07 21:56:47
eval('5*8-4') 将导致36
发布于 2014-04-07 21:37:07
我不知道有任何库会这样做(这并不意味着没有这种情况--这仅仅意味着我根本不需要它),但您最终应该做的是构建一个自动机,它将解析输入字符串并将其转换为一个有适当转换的适当图。这不是一个很容易的话题,如果你想走这条路,你应该开始阅读算术表达式解析算法(对不起,我没有任何解决方案)。
或者,您可以欺骗和定义将由用户选择的方程类型。一旦用户选择了方程的类型,您就应该能够显示用户的输入,在那里用户将能够选择系数。您可以将这些系数读入不同的变量,并在绘制过程中应用转换(例如,如果用户选择sin(x)类型,您知道一般方程的公式如下:y= k*sin( a *x + b) + c。因此,一旦选中,就可以允许用户输入k、a、b、c,并根据输入计算出图形的适当点位置。)
好吧,第三种解决方案可能涉及"eval ",但是通常您应该不惜任何代价避免eval (B/c --它是直接的JavaScript注入,这对这种情况来说可能是可以的,但可能会给您以后的生活带来麻烦。)。
发布于 2014-04-10 07:29:46
您可以使用math.js,它附带了高级表达式解析器。它支持变量和函数的定义。
// create an instance of math.js
var math = mathjs();
// evaluate an expression
math.eval('5*8-4'); // 36
// user defined function (returns a native JavaScript function)
var f = math.eval('f(x) = 2*x^2 + 6');
// use the function (for graphing or something)
f(2); // 14https://stackoverflow.com/questions/22922664
复制相似问题