我试图创建一个函数,您将在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;
};
};
答案 0 :(得分:0)
document.getElementById("m").value
是string
。
执行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