Javascript数学函数解析器

时间:2016-10-12 14:47:50

标签: javascript

我试图创建一个函数,您将在HTML表单中输入变量,它将计算所有Y点,但由于某些原因,这行代码不起作用: m * ( x * x ) + c * x + p = points; 我不知道我的语法是错还是什么? 完整代码在这里:

var m = document.getElementById("m").value;
var c = document.getElementById("c").value;
var p = document.getElementById("p").value;
var x = -10;
var points;
var y = -10;
var functionPoints = points[0];
function functionResolver(m, c, p) {
        while ( x > -11 && x < 11 ) {
         m * ( x * x ) + c * x + p = points;
         points[y] = points;
         y += 1;
         x += 1;
       };
     };

5 个答案:

答案 0 :(得分:0)

document.getElementById("m").valuestring

执行var m = Number(document.getElementById("m").value);

你需要一个右侧任务:

 points[y] = m * ( x * x ) + c * x + p;

答案 1 :(得分:0)

该计划将按照PEMA的顺序进行。您可以在计算周围放置额外的括号,也可以将计算分解为较小的部分。

•括号 •指数 •乘法/除法(从左到右) •加法/减法(从左到右)。

例如

(m *(x * x))+ c * x + p =点;

不同

m *(x * x)+(c * x)+ p =点;

不同

** m *(x * x)+(c *(x + p))= points;

此外,部件可能不是数字,因此使用Number()

转换为数字

答案 2 :(得分:0)

正如提到的其他答案,您必须将输入从字符串转换为数字。另外,请务必将变量名称放在表达式的左侧(您的右侧),并且不要覆盖 points 数组变量(在while循环上方声明)计算结果。这里我声明一个本地点变量来存储单个计算结果。有几种方法可以将输入转换为字符串:

使用parseFloat(如果你想支持小数输入):

var point = parseFloat(m * ( x * x ) + c * x + p);
points[y] = point;

使用parseInt:

var point = parseInt(m * ( x * x ) + c * x + p);
points[y] = point;

使用Number(与parseInt基本相同,请参阅What is the difference between parseInt() and Number()?):

var point = Number(m * ( x * x ) + c * x + p);
points[y] = point;

在下面的例子中,我们通过将两行压缩成一行来删除对本地声明的点变量的需求(当然可以使用上述3种字符串到数字方法中的任何一种):

points[y] = parseFloat(m * ( x * x ) + c * x + p);

答案 3 :(得分:0)

我不确定你在这里用点[y]是什么意思...因为y用-10初始化,而点[-10],基本上意味着你试图访问索引&#34; - 10&#34;分数。

答案 4 :(得分:0)

为了解释其他答案,除了无效右手赋值和将输入转换为数值的问题之外,还需要等待DOM加载并允许用户有时间在输入字段中键入值。您当前的代码会尝试立即加载值,而不是等待点击按钮。

有关如何实现此功能的完整示例,请参阅此gist

97