我尝试编写脚本来循环遍历对象并返回那些类型等于HTML中设置的自定义数据类型的脚本。然而我无法将带有对象数组的变量传递给我的for循环。你能告诉我这段代码我做错了什么吗?我收到了:
无法读取未定义的属性“长度”
PS。它必须在原始JavaScript中完成,没有jQuery
var btn = document.getElementById("btn");
var przepisy;
function findData(data) {
var kuchnia = data.dataset.type;
var myRequest = new XMLHttpRequest();
myRequest.onreadystatechange = function() {
if (this.readyState === 4 && this.status == 200) {
przepisy = JSON.parse(myRequest.responseText);
}
};
myRequest.open('GET', 'js/przepisy.json');
myRequest.send();
for (i = 0; i < przepisy.length; i++) {
var results = "";
var obj = przepisy[i];
var type = przepisy.type;
if (type === kuchnia) {
results += obj.name;
document.write(results);
}
}
}
答案 0 :(得分:3)
问题是你在获取数据之前调用for循环,这就是为什么长度为0.你应该将for循环移动到你的响应中:
function findData(data) {
var kuchnia = data.dataset.type;
var myRequest = new XMLHttpRequest();
myRequest.onreadystatechange = function() {
if (this.readyState === 4 && this.status == 200) {
przepisy = JSON.parse(myRequest.responseText);
for(i = 0; i < Object.keys(przepisy).length; i++) {
var results = "";
var obj = przepisy[i];
var type = przepisy.type;
if(type === kuchnia) {
results += obj.name;
document.write(results);
}
}
}
};
myRequest.open('GET','js/przepisy.json');
myRequest.send();
}