Javascript getElementByID循环返回null
Chrome developer tools表示value函数不适用于空值,并指向for循环中的行。为什么getElementByID不能获取我的值?(这是一个重构,getElement使用输入的实际值完美地工作)Javascript getElementByID循环返回null,javascript,Javascript,Chrome developer tools表示value函数不适用于空值,并指向for循环中的行。为什么getElementByID不能获取我的值?(这是一个重构,getElement使用输入的实际值完美地工作) 不要在数组中使用 使用一个简单的for循环 var a = ["start", "end"]; for(var i = 0; i < a.length; ++i) { console.log(document.getElementById(a[i]).value); } 因
不要在数组中使用
使用一个简单的for循环
var a = ["start", "end"];
for(var i = 0; i < a.length; ++i)
{
console.log(document.getElementById(a[i]).value);
}
因为for循环语法不正确,所以代码无法工作
试试这个
var locationStops = ["start","end"];
var stopNum = locationStops.length;
var stopAddresses = [];
for(i = 0; i < locationStops.length; i++) {
stopAddresses.push(document.getElementById(locationStops[i]).value);
}
var locationStops=[“开始”,“结束”];
var stopNum=locationStops.length;
var stopAddresses=[];
对于(i=0;i
或者,您可以使用Array.prototype.map
var locationStops = ["start","end"];
var stopAddresses = locationStops.map(function(val) {
return document.getElementById(val).value;
});
老实说,在两个元素的数组上循环有点傻,如果是我的代码,我甚至更愿意直接分配每个地址
var stopAddresses = [document.getElementById("start").value, document.getElementById("end").value];
通过使用map
,您可以避免for循环和可能遇到的bug:
stopAddresses = locationStops . map(function(id) {
return document.getElementById(id).value;
});
根据您的风格偏好,您可能会发现以下内容更具可读性:
function get_value_from_id(id) {
return document.getElementById(id).value;
}
stopAddresses = locationStops . map(get_value_from_id);
如果要使用循环,可以使用新的
for…of构造:
for (let val of locationStops) {
^^
stopAddresses.push(document.getElementById(val).value);
}
如果您的环境支持ES7阵列理解:
[ for (id of locationStops) document.getElementById(id).value ]
如果您想坚持使用
for…in
循环,那么正如其他答案所指出的,循环变量是索引,而不是值,因此您必须使用locationStops[i]
访问ID,但最好使用常规for循环。console.log(val)代码>---总是检查变量是否保持您期望的值是有意义的。而且,DOM id应该是唯一的。不确定为什么需要循环。不要在
中为..使用var locationStops=[“开始”,“结束”],stopNum=locationStops.length,stopAddresses=[];对于(val i=0;i
您的val引用0,1等。因此必须存在ID为0,1的元素。如果需要数组中的值,请使用locationStops[val]。调试程序。按照前面的注释中的建议添加一个console.log
,或者在stopAddresses上设置一个断点。按行,检查val
的值。我想你会很快发现问题的。
for (let val of locationStops) {
^^
stopAddresses.push(document.getElementById(val).value);
}
[ for (id of locationStops) document.getElementById(id).value ]