我正在寻找一种纯 Javascript 的方法来修复我的以下代码:
function autoFill(response) {
var arr = [];
arr.fn = document.getElementsByName("firstName")[1];
arr.ln = document.getElementsByName("lastName")[1];
arr.em = document.getElementsByName("Email")[1];
arr.pn = document.getElementsByName("phoneNumber")[1];
if(response === false) {
alert('false');
arr.forEach(function(entry){
entry.value = "";
});
}else{
alert('true');
arr.fn.value = response.firstName;
arr.ln.value = response.lastName;
arr.en.value = response.email;
arr.pn.value = response.phone;
}
}
我正在尝试做的事情:
如果response data === false
,循环遍历每个元素arr[]
并将其文本值设置为空""
。
发生了什么:
直接设置值工作(如else{}
块中所示),但是循环或迭代数组会引发错误:Uncaught TypeError: Cannot set property 'value' of undefined
问题:
如何遍历存储在数组中的输入集合并设置它们的值?为什么会undefined
抛出错误?
谢谢!
编辑:更改为以下内容无济于事;该else{]
块仍然可以正常工作,循环是我相信的问题。
function autoFill(response) {
var arr = [];
arr["fn"] = document.getElementsByName("firstName")[1];
arr["ln"] = document.getElementsByName("lastName")[1];
arr["em"] = document.getElementsByName("Email")[1];
arr["pn"] = document.getElementsByName("phoneNumber")[1];
if(response === false) {
alert('false');
arr.forEach(function(entry){
entry.value = "";
});
}else{
alert('true');
arr["fn"].value = response.firstName;
arr["ln"].value = response.lastName;
arr["en"].value = response.email;
arr["pn"].value = response.phone;
}
}