我正在尝试将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循环并不意味着它们会在调用它们的函数中引起任何重复。

10-08 04:02