我尝试编写脚本来遍历对象,并返回那些类型等于HTML中设置的自定义数据类型的脚本。然而,即时通讯无法将变量与对象数组传递给我的for循环。你能告诉我在这段代码中我做错了什么吗?我收到:无法将带有JSON对象的变量传递给循环
无法读取未定义
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);
}
}
}
似乎像'przepisy'没有正确初始化。你能证实吗? – 31piy
您正试图在完成之前访问异步操作的结果。 – Pointy
首先,将您的循环包含在成功回调函数中,以便有一个对象可以查看。第二:'przepisy = JSON.parse(myRequest.responseText);'应该返回一个Object,而不是一个数组。要找出对象中有多少个属性,使用'Object.keys(przepisy).length'。或者,如果你真的想要获得一个数组。您需要查看存储您所寻找的数组的其中一个属性的对象。 –