我有一件简单的事情:
有一个带有书籍对象的JSON,每本书都有一个标题,作者和年份。 我想从列表中选择一个选项,并在表格中显示所选属性。我使用了W3中的一个示例,但是现在我被卡住了,没有任何作用,因为它应该...
function change_myselect(sel) {
var obj, dbParam, xmlhttp, myObj, x, txt = "";
obj = { "table":sel, "limit":20 };
dbParam = JSON.stringify(obj);
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
myObj = JSON.parse(this.responseText);
txt += "<table border='1'>"
for (x in myObj) {
txt += "<tr><td>" + myObj[x].name + "</td></tr>";
}
txt += "</table>"
document.getElementById("demo").innerHTML = txt;
}
};
xmlhttp.open("GET", "generated.json", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send("x=" + dbParam);
}
答案 0 :(得分:0)
使用调试器行很容易发现问题
console.log(myObj)
这是一个对象,你试图循环它。您希望循环遍历包含该数组的对象中的键。
console.log(myObj.books);
答案 1 :(得分:0)
您正在迭代对象中的单个属性books
,而不是迭代属性包含的数组。
而不是:
for (x in myObj) {
txt += "<tr><td>" + myObj[x].name + "</td></tr>";
}
尝试这样的事情:
myObj.books.forEach((book) => {
txt += "<tr><td>" + book[sel.toLowerCase()] + "</td></tr>";
});