javascript - 无法将列表项添加到 HTML 文档
问题描述
我正在使用fetch()
命令来获取 JSON 格式的数据数组。我正在使用函数fetchURL()
来获取 JSON 格式的数据。我用async-await
. 然后在收到的每个数据中,我试图将它的login
字段添加到我在 HTML 文件中创建的有序列表中。
我创建了一个createListItem()
函数来查找 HTML 文件中的有序列表标签并将其附加到该login
字段中。但首先我尝试将所有login
字段存储在一个数组arr
中。但我无法将login
字段存储在其中。
但是当我直接使用createListItem()
函数创建一个带有登录“字段作为文本的列表项时,我能够将这些字段添加到有序列表中,因此我得到了有序列表。我正在注释掉那些让我直接在浏览器上输出的行当我不将login
字段存储在以下窗口时arr
:
代码:
function createListItem(text) {
const parent = document.getElementsByTagName("ol");
const entry = document.createElement("li");
entry.textContent = text;
parent[0].appendChild(entry);
}
const url = "https://api.github.com/users ";
async function fetchURL() {
return (await fetch(url)).json();
}
let arr = [];
async function createList() {
const data = await fetchURL();
for (let i = 0; i < data.length; i++) {
//createListItem(`${data[i].login}`);
arr.push(data[i].login);
}
}
createList();
解决方案
您只需一个异步函数即可实现您的目标:
const url="http://jsonplaceholder.typicode.com/users";
async function getList(u){
const arr=(await fetch(u).then(r=>r.json())).map(e=>e.username);
document.querySelector("ol").innerHTML=arr.map(u=>`<li>${u}</li>`).join("");
console.log(arr);
}
getList(url);
<h2>List of login names</h2>
<ol></ol>
<p>end of page</p>
在上面的代码片段中,我使用了 typicode.com 提供的公共资源并提取了属性 ofusername
而不是login
.
推荐阅读
- kubernetes - GCP 云作曲家节点在一天中间歇性地进入 crashloopbackoff 状态
- python - 如何使用 PIL 将日本文本正确输出到图像?
- laravel - 没有 oAuth 的 Laravel 护照
- sql - 如何从 CSV 输出中删除换行符
- haskell - Haskell - 变量不在范围内错误 - 初学者
- python - 如何在使用 conda 环境时启用本地代码?
- c# - 如何为页面中的动态数据创建 IIS 重写
- javascript - 使用递归 JS 函数计算 DOM 树中的节点和元素
- python - 从嵌套列表中提取元素?
- python - Python 多重列表推导不起作用,如何正确操作?