如何使用 API 中的数据动态填充 HTML

作为web开发者(以及所有软件开发者),掌握应用程序编程接口(api)至关重要。简单来说,api是可通过javascript的fetch()方法访问的数据集合,这些数据并非本地存储,而是位于另一台服务器上,可在需要时访问全部或部分数据,并在网站或应用的特定部分显示。

本文将演示如何从一个包含哈利·波特角色信息的API获取数据,并在网页上显示。你会发现,数据获取和显示其实是项目中最简单的一部分。言归正传,让我们开始吧!

获取API数据

首先,将HTML文档中用于显示角色信息的容器(字符容器)分配给一个变量:

const charssection = document.getElementById('chars-container');

登录后复制

接下来,将API的URL分配给一个变量(简化代码),并创建一个异步函数(因为需要等待数据检索):

// API URLconst charsurl = 'https://hp-api.herokuapp.com/api/characters';// 获取并过滤角色数据的异步函数async function getChars() {    const response = await fetch(charsurl);    const allCharsArr = await response.json();    let newCharsArr = [];    for (let i = 0; i  0 && allCharsArr[i].species === 'human') {            newCharsArr.push(allCharsArr[i]);        }    }    return newCharsArr;}

登录后复制

getChars()函数获取API数据,将其转换为JSON,然后将符合条件的数据对象(species属性为’human’且image属性长度大于0)推入newCharsArr数组。

立即学习“前端免费学习笔记(深入)”;

数据过滤的原因有很多,例如API的不完整性。通过循环和条件语句,可以根据项目需求处理不完整的数据。本例中,并非所有角色都包含图片,因此过滤掉缺少图片的数据。

getChars()函数返回一个包含过滤后角色数据的数组。

使用检索到的API数据填充页面

async function buildPage() {    const newCharsArr = await getChars();    // 填充角色卡片的HTML    for (let i = 0; i < newCharsArr.length; i++) {        charssection.innerHTML +=            "
" + "
" + "" // 心形图标,需引入字体图标库 + "@@##@@" + "
" + "

" + newCharsArr[i].name + "

" + "

种族: " + newCharsArr[i].ancestry + "

" + "

学院: " + newCharsArr[i].house + "

" + "

演员: " + newCharsArr[i].actor + "

" + "
"; }}

登录后复制

buildPage()函数使用getChars()函数返回的数据填充charssection变量。由于getChars()是异步的,buildPage()也必须是异步的,等待getChars()执行完毕后才能填充内容。

buildPage()函数遍历过滤后的数据数组,动态创建角色卡片,包含角色图片、姓名、种族、学院和演员信息。

下图是提取、过滤角色信息并填充页面后的页面截图(样式未包含在示例中,完整代码请参考项目链接)。

如何使用 API 中的数据动态填充 HTML" + newCharsArr[i].name + "

本例展示了如何使用API数据动态填充网页。如有任何疑问或建议,欢迎提出。如果您觉得本文有帮助,欢迎点赞或评论。如果您认为本文对其他人有帮助,请分享给您的朋友们。

感谢阅读!

链接

项目演示

项目代码仓库

MDN Web文档:“Web API 简介”

最初发布于2022年11月14日

如何使用 API 中的数据动态填充 HTML

以上就是如何使用 API 中的数据动态填充 HTML的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2642554.html

(0)
上一篇 2025年3月7日 06:49:02
下一篇 2025年3月7日 06:49:12

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 使用 React 进行现代 Web 开发:完整指南

    构建优雅高效的 Web 应用,如同搭建精妙的乐高杰作,这就是 React JS 的魅力所在——可复用的组件组合,打造动态交互的用户界面。 React JS 彻底改变了 Web 开发,但精通其复杂性并非易事。 状态管理的挑战: 维护应用数据井…

    2025年3月7日
    000
  • 如何构建 Astro 集合加载器

    Astro 1.14 版本推出了“内容层 API”这一强大功能,扩展了现有内容集合功能,允许您从 Astro 项目本地文件之外的来源获取数据。虽然 Astro 团队已提供许多加载器处理常见数据源(例如 RSS 提要、CSV 文件),但本文将…

    2025年3月7日
    200
  • 如何将 Astro 与 Hono 一起使用

    Astro 框架潜力巨大,堪称全能型框架。然而,在 API 开发方面,Hono 则更胜一筹:简洁、跨平台兼容,并提供类似 TRPC 但速度更快的基本 RPC 系统。本文将演示如何将两者结合,优势互补。 Astro 项目搭建 首先,创建一个新…

    2025年3月7日
    200
  • 如何使用 GitHub Actions 和 JavaScript 自动创建和删除 Kafka 主题

    对于采用事件驱动架构的开发者而言,自动化 Kafka 主题的创建和删除至关重要。无论是管理不断扩展的系统,还是实施基础设施即代码,随着 Kafka 部署规模的增长,手动管理主题将变得难以为继。本教程将指导您如何运用 JavaScript 和…

    2025年3月7日
    200
  • stringindexOf() 底层

    大家好, 本文将分享我从零开始实现indexOf()方法的历程。 方法签名及参数说明: indexOf() 方法接收三个参数: string:待搜索的字符串。target:目标子字符串。start:搜索起始索引(默认为0)。 第一次尝试:单…

    2025年3月7日
    200
  • 动画与新标志解锁!!!!

    Interactive Channel Logo body { margin: 0; display: flex; justify-content: center; align-items: center; height: 100vh; b…

    2025年3月7日
    200
  • 干净的代码:JavaScript 不变性、核心概念和工具

    什么是数据可变性? 直接修改现有数据值的行为称为可变性。在 JavaScript 中,对象和数组默认是可变的: // 可变性示例const user = { name: ‘alice’ };user.name = ‘bob’; // 修改对…

    2025年3月7日
    200
  • Vuejs 还是 Nuxtjs?

    选择 Vue.js 还是 Nuxt.js? 这取决于您的项目需求。Vue.js 是一个易于使用的 JavaScript 框架,提供构建用户界面的强大工具集。而 Nuxt.js 基于 Vue.js,并增加了服务器端渲染、静态站点生成等高级功能…

    2025年3月7日
    200
  • 金丝雀测试:确保顺利推出

    在快速迭代的软件开发领域,金丝雀发布已成为降低部署风险的关键策略。它允许团队以可控、渐进的方式验证变更,确保平滑部署并维护用户体验。 什么是金丝雀发布? 金丝雀发布是一种软件部署方法,将新功能或更新先部署到一小部分用户,再逐步推广至全体用户…

    2025年3月7日
    200
  • MVP 的想法:这真的是一个问题吗?给出你的想法!

    寻找合适的品牌名称,域名可用性常常成为一大难题。虽然godaddy等域名注册商提供批量域名搜索工具,但效率往往不足。 如果您需要同时搜索数百个域名,或者计划从事域名投资业务,如何快速找到理想的、尚未被注册的域名呢? 我开发了一个简单的工具原…

    2025年3月7日
    200

发表回复

登录后才能评论