Javascript调试-脚本使用硬编码变量,而不是getElementById(';id';).value
我正在尝试调试我编写的一些javascript,但不知道为什么它不工作。如果我硬编码变量,它可以正常工作,但是如果我使用document.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;
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,现已修复。