我正在尝试将0-99之间的数字添加到myData函数中,以便一键打印所有用户。但是我遇到了错误。
错误:index.js:14未捕获(承诺)TypeError:无法读取未定义的属性“ userId”
在index.js:14
function number() {
for (let i = 0; i < 100; i++) {
i;
}
}
const myData = () => {
fetch('https://jsonplaceholder.typicode.com/posts?fbclid=IwAR2aHkMfSVPYV3va38MKu-jOahl9G8UzyPJ1Dd67EyskMPZMw1gN9xi-AUg')
.then(response => {
return response.json();
})
.then(users => {
document.getElementById('demo').innerHTML += `
User ID: ${users[number()].userId}<Br>
ID: ${users[number()].id}<br>
Title: ${users[number()].title}<Br>
Desc: ${users[number()].body}`;
})
}
最佳答案
尚不清楚您希望number()
函数将做什么。当您在问题中遇到问题时,它将运行for循环,然后以返回值undefined
退出函数。添加return i
将使其返回零并立即退出循环。
如果您打算将demo
id的innerHTML设置为具有所有用户,那么您需要在循环中进行如下操作:
.then(users => {
let allUsersHtml = "";
for (let i=0; i<users.length; i++) {
allUsersHtml += `
User ID: ${users[i].userId}<br>
ID: ${users[i].id}<br>
Title: ${users[i].title}<br>
Desc: ${users[i].body}`;
}
document.getElementById('demo').innerHTML = allUsersHtml;
})
假定返回的
users
数据是Array
对象。首次尝试的主要问题是了解功能的运行方式。他们每次被调用只能返回一件事。仅仅因为它们包含一个for循环并不意味着它们会在调用它们的函数中引起任何重复。