Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript调试-脚本使用硬编码变量,而不是getElementById(';id';).value_Javascript_Debugging_Getelementbyid - Fatal编程技术网

Javascript调试-脚本使用硬编码变量,而不是getElementById(';id';).value

Javascript调试-脚本使用硬编码变量,而不是getElementById(';id';).value,javascript,debugging,getelementbyid,Javascript,Debugging,Getelementbyid,我正在尝试调试我编写的一些javascript,但不知道为什么它不工作。如果我硬编码变量,它可以正常工作,但是如果我使用document.getElementById('id').value来获取变量,它会失败 下面的例子可以很好地工作,但一旦我取消注释注释行,它就不工作了。在第二部分之前和之后打印变量,它们似乎是相同的 真的不明白发生了什么。也许我只是需要好好考虑一下,但如果有人有建议那就太好了 roof_width = 5; roof_depth = 3; panel_width = 2;

我正在尝试调试我编写的一些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;

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

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

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

document.getElementById('roof_margin').value;

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

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

document.getElementById('roof_margin').value;

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

是否尝试添加文本框中的数字?由于JavaScript的变量输入系统的工作方式(加上
+
运算符的重载),
2+2===4
(添加数字),但
'2'+'2'===22'
(字符串串联)。尝试将行更改为,例如:

panel_width = parseFloat(document.getElementById('panel_width').value);
或者:

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

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

是否尝试添加文本框中的数字?由于JavaScript的变量输入系统的工作方式(加上
+
运算符的重载),
2+2===4
(添加数字),但
'2'+'2'===22'
(字符串串联)。尝试将行更改为,例如:

panel_width = parseFloat(document.getElementById('panel_width').value);
或者:

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

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

确保代码处于onload函数中。否则,元素可能尚未加载到DOM中

window.onload = funciton(){/* code here */};

确保代码处于onload函数中。否则,元素可能尚未加载到DOM中

window.onload = funciton(){/* code here */};

你能在这里发布html吗?你确定你有带有这些ID的元素吗<代码>面板宽度,
面板深度
屋顶边距
?谢谢你的评论,你是对的,我本应该发布html的,但现在已经修复了。你能在这里发布html吗?你确定你有带有这些ID的元素吗<代码>面板宽度,
面板深度
屋顶边距
?谢谢你的评论,你是对的,我本应该发布html的,但现在已经修复了。太棒了,谢谢!我认为这可能是因为它将它们视为字符串,但后来我读到javascript决定了数据类型本身。谢谢你的修复!太棒了,谢谢!我认为这可能是因为它将它们视为字符串,但后来我读到javascript决定了数据类型本身。谢谢你的修复!是的,我的意思是说它是从表单元素中获取这些。由于idealmachine,现在已修复。是的,我想说的是它是从表单元素中获取这些内容的。由于idealmachine,现已修复。该函数是从onClick事件调用的。谢谢你的建议。由于idealmachine,现已修复。该函数是从onClick事件调用的。谢谢你的建议。由于idealmachine,现在已修复。感谢您的建议。它们是独一无二的,但脚本将它们视为字符串而不是浮点数。由于idealmachine,现在已修复。感谢您的建议。它们是独一无二的,但脚本将它们视为字符串而不是浮点数。由于idealmachine,现已修复。