如何使用 JavaScript 按钮遍历 JSON 数组中的对象


本文介绍如何通过点击按钮依次展示 json 数组中每个对象的数据,利用索引控制、事件监听与循环翻页逻辑实现平滑切换。

在前端开发中,常需将结构化 JSON 数据以交互方式呈现给用户。例如,从一个包含多个用户信息的数组中,按顺序逐条显示——这正是本教程要解决的核心需求:点击“next”按钮,自动切换并渲染下一个对象的内容

实现该功能的关键在于三点:

  1. 数据预加载与状态管理:一次性获取全部 JSON 数据,并用变量(如 currentUser)记录当前展示项的索引;
  2. 事件驱动更新:为按钮绑定 click 事件,每次触发时递增索引,并通过取模运算(% data.length)实现循环切换;
  3. 安全高效渲染:每次切换前清空旧内容,再插入新 DOM 节点,避免重复叠加或内存泄漏。

以下是完整、可直接运行的实现代码(已优化可读性与健壮性):

const el = (sel, par) => (par || document).querySelector(sel);
const elNew = (tag, prop) => Object.assign(document.createElement(tag), prop);

const elUser = el("#user");
const elNext = el("#next");

const showUser = (user) => {
  const div = elNew("div", {
    className: "item-user",
    textContent: `${user.first_name || ''} ${user.last_name || ''}`
  });
  elUser.innerHTML = ""; // 清空旧内容(也可用 elUser.replaceChildren(div))
  elUser.append(div);
};

(async () => {
  try {
    let currentIndex = 0;
    const res = await fetch('data.json');
    if (!res.ok) throw new Error(`HTTP ${res.status}: ${res.statusText}`);
    const data = await res.json();

    if (!Array.isArray(data) || data.length === 0) {
      throw new Error("Invalid JSON: expected a non-empty array");
    }

    showUser(data[currentIndex]); // 初始化显示首项

    elNext.addEventListener("click", () => {
      currentIndex = (currentIndex + 1) % data.length; // 自动循环:0→1→2→0...
      showUser(data[currentIndex]);
    });
  } catch (err) {
    console.error("Failed to load or display user data:", err);
    elUser.textContent = "Error loading data.";
  }
})();

注意事项与最佳实践

  • 使用 async/await 替代 .then() 链,提升代码可读性与错误处理能力;
  • 添加 HTTP 状态校验(res.ok)和 JSON 结构校验,增强鲁棒性;
  • textContent 替代字符串拼接 innerHTML 可防止 XSS(尤其当数据含用户输入时);
  • 若需支持“上一页”,可扩展为双向导航(维护 currentIndex 并添加 prev 按钮);
  • 如数据量极大,建议配合虚拟滚动或分页加载,避免初始渲染性能瓶颈。

该方案简洁、可扩展,适用于产品级单页应用中的数据轮播、表单向导、测试题切换等典型场景。


# javascript  # java  # html  # js  # 前端  # json  # app  # 前端开发  # ai  # 性能瓶颈  # 驱动更新  # 代码可读性 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 网络优化76771 】 【 技术知识130152 】 【 IDC云计算60162 】 【 营销推广131313 】 【 AI优化88182 】 【 百度推广37138 】 【 网站推荐60173 】 【 精选阅读31334


相关推荐: LINUX怎么查看进程_LINUX ps命令查看运行服务  Win11怎么查看硬盘型号_Windows 11检测硬盘信息方法【技巧】  Linux怎么实现内网穿透_Linux安装Frp客户端与服务端配置【方法】  Win11如何设置文件关联 Win11修改特定文件类型的默认打开程序【详解】  Python迭代器生成器进阶教程_节省内存与懒加载实战  Windows如何使用BitLocker To Go加密U盘?(移动驱动器加密)  Windows如何拦截2345弹窗广告_Windows拦截2345弹窗方法【步骤】  Win11怎么关闭键盘按键音_Win11禁用打字声音反馈【教程】  Mac的Time Machine怎么用_Mac系统备份与数据恢复【完整指南】  php怎么操作Redis_Redis扩展连接与基本命令使用方法【方法】  Windows资源管理器总是卡顿或重启怎么办?(修复方法)  c++ stringstream用法详解_c++字符串与数字转换利器  如何使用Golang捕获测试日志_Golang testing日志记录方法  Win11如何关闭游戏模式 Win11禁用Xbox Game Bar录制【优化】  php中$this和::能混用吗_对象与静态作用域冲突解决【方法】  Win11怎么关闭通知中心_Windows11系统通知与专注助手设置  Win10怎样清理C盘浏览器缓存_Win10清理浏览器缓存步骤【步骤】  如何在JavaScript中动态拼接PHP的base_url与JS变量  windows系统如何安装cab更新补丁_windows手动安装更新包教程  如何在 Go 中正确测试带 Cookie 的 HTTP 请求  如何在 Laravel 中通过嵌套关联关系进行 orderBy 排序  C++ STL算法库怎么用?C++常用算法函数(sort, find)教程【效率提升】  如何解决Windows字体显示模糊的问题?(ClearType设置)  如何使用Golang开发简单的聊天室消息存储_Golang WebSocket数据持久化方法  Python异步编程高级项目教程_asyncio协程任务管理实战  Win11如何开启系统更新 Win11开启系统更新方法【步骤】  如何使用Golang encoding/json解析JSON_Golang encoding/json解析与序列化示例  Win11怎么清理C盘系统日志_Win11清理系统日志文件【步骤】  Win11怎样彻底卸载自带应用_Win11彻底卸载自带应用方法【步骤】  Win11怎么清理C盘下载文件夹_Win11清理下载文件夹技巧【教程】  mac怎么分屏_MAC双屏显示与分屏操作技巧【指南】  Win11怎么关闭OneDrive同步_Win11取消自动备份文件【教程】  MAC如何修改默认应用程序_MAC文件后缀关联设置与打开方式更改【教程】  Win11如何关闭小娜Cortana Win11禁用Cortana语音助手【优化】  如何在Golang中实现微服务负载均衡_Golang负载均衡策略与实现示例  如何使用Golang table-driven基准测试_多组数据测量函数效率  Win11怎么设置开机密码_Windows11账户登录选项PIN码  如何使用Golang指针与接口结合_实现方法调用和动态类型  Win11关机快捷键是什么_Win11快速关机方法【大全】  Windows7如何安装系统镜像_Windows7系统安装教程【步骤】  使用类变量定义字符串常量时的类型安全最佳实践  VSC怎么创建PHP项目_从零开始搭建项目的步骤【操作】  LINUX如何删除用户和用户组_Linux userdel和groupdel命令用法【系统管理】  Win11任务栏颜色怎么改_Win11自定义任务栏配色设置【美化】  Win11怎么压缩文件 Win11自带压缩解压功能使用【教程】  MySQL 中使用 IF 和 CASE 实现查询字段条件化显示  c++中如何使用auto关键字_c++11类型推导用法说明  Windows 10自带杀毒软件在哪_Windows 10打开和使用Windows安全中心  Linux如何挂载新硬盘_Linux磁盘分区格式化与开机自动挂载【指南】  Python网页解析流程_html结构说明【指导】 

 2025-12-27

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

致胜网络推广营销网


致胜网络推广营销网

致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。

 915688610

 17370845950

 915688610@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.