1

我正在尝试调试我编写的一些 javascript,但无法弄清楚它为什么不起作用。如果我对变量进行硬编码,它可以正常工作,但如果我使用 document.getElementById('id').value 来获取变量,它会失败。

下面的示例可以正常工作,但是一旦我取消注释注释行,它就不行了。在第二部分之前和之后打印变量,它们似乎是相同的。

实在搞不懂是怎么回事。也许我只需要睡在上面,但如果有人有建议那就太好了!

roof_width = 5;
roof_depth = 3;
panel_width = 2;
panel_depth = 1;
panel_power = 200;
roof_margin = 0.100;
panel_gap = 0.05;

roof_width = document.getElementById('roof_width').value;
roof_depth = document.getElementById('roof_depth').value;
// panel_width = document.getElementById('panel_width').value;
// panel_depth = document.getElementById('panel_depth').value;
panel_power = document.getElementById('panel_power').value;
// roof_margin = document.getElementById('roof_margin').value;
panel_gap = document.getElementById('panel_gap').value;
4

4 回答 4

3

您是否要添加文本框中的数字?由于 JavaScript 的变量类型系统的工作方式(结合+运算符的重载),2 + 2 === 4(添加数字)但是'2' + '2' === '22'(字符串连接)。尝试将这些行更改为,例如:

panel_width = parseFloat(document.getElementById('panel_width').value);

或者:

panel_width = Number(document.getElementById('panel_width').value);

这将确保 JavaScript 将数字视为数字而不是字符串。

于 2010-11-12T21:21:20.220 回答
1

JavaScript 参数的调用方式与调用 HTML 元素的方式不同。为了打电话

document.getElementById('roof_margin').value;

您需要将“roof_margin”分配给 HTML 表单元素。

于 2010-11-12T21:06:35.167 回答
0

也许你有多个具有相同 id 的 dom 元素?记住 dom 元素 ID 必须是唯一的。我建议您使用 jquery 将 javascript 与 html 进行交互。

于 2010-11-12T21:06:03.597 回答
0

确保您的代码在 onload 函数中。否则元素可能尚未加载到 DOM 中。

window.onload = funciton(){/* code here */};
于 2010-11-12T21:22:33.937 回答