首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用javascript数学系统简化输入的内容

使用javascript数学系统简化输入的内容
EN

Stack Overflow用户
提问于 2014-04-07 20:41:13
回答 3查看 57关注 0票数 0

这显然是完美的:<script>alert(5*8-4)</script>

但我需要解决输入框里的任何问题。

下面是我想做的事情:我会把输入的值输入到一个变量中。那我就用

代码语言:javascript
运行
复制
document.write("<script>alert("+theinputvalue+")<script>");

或者这样做:

代码语言:javascript
运行
复制
var string="<script>alert("+theinputvalue+")<script>";document.write(string);

但什么都不管用。

有可能这样做吗?如果没有,告诉我可以使用什么简单的其他系统。

最后,我将使用它来绘制这样的线条:

代码语言:javascript
运行
复制
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/

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-04-07 21:56:47

代码语言:javascript
运行
复制
eval('5*8-4') 

将导致36

票数 1
EN

Stack Overflow用户

发布于 2014-04-07 21:37:07

我不知道有任何库会这样做(这并不意味着没有这种情况--这仅仅意味着我根本不需要它),但您最终应该做的是构建一个自动机,它将解析输入字符串并将其转换为一个有适当转换的适当图。这不是一个很容易的话题,如果你想走这条路,你应该开始阅读算术表达式解析算法(对不起,我没有任何解决方案)。

或者,您可以欺骗和定义将由用户选择的方程类型。一旦用户选择了方程的类型,您就应该能够显示用户的输入,在那里用户将能够选择系数。您可以将这些系数读入不同的变量,并在绘制过程中应用转换(例如,如果用户选择sin(x)类型,您知道一般方程的公式如下:y= k*sin( a *x + b) + c。因此,一旦选中,就可以允许用户输入k、a、b、c,并根据输入计算出图形的适当点位置。)

好吧,第三种解决方案可能涉及"eval ",但是通常您应该不惜任何代价避免eval (B/c --它是直接的JavaScript注入,这对这种情况来说可能是可以的,但可能会给您以后的生活带来麻烦。)。

票数 1
EN

Stack Overflow用户

发布于 2014-04-10 07:29:46

您可以使用math.js,它附带了高级表达式解析器。它支持变量和函数的定义。

代码语言:javascript
运行
复制
// 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); // 14
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22922664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档