当前位置: 首页 > news >正文

在js渲染的dom中的事件中传递对象

在某些情况下,可能需要将整个对象或部分对象嵌入到 HTML 元素的属性中,可以将对象数据序列化为 JSON 字符串,存储在 data-* 自定义属性中。这样可以在事件中取出并解析对象数据:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>嵌入 JSON 数据</title>
</head>
<body><div id="container"></div><script>// 对象数组const users = [{ id: 1, name: 'Alice', age: 25, job: 'Engineer' },{ id: 2, name: 'Bob', age: 30, job: 'Designer' },{ id: 3, name: 'Charlie', age: 35, job: 'Teacher' }];// 获取容器const container = document.getElementById('container');// 使用模板字符串拼接对象属性并嵌入 JSON 数据let html = '';users.forEach(user => {html += `<div class="user-card"><h2>${user.name}</h2><p>Age: ${user.age}</p><p>Job: ${user.job}</p><button data-user='${JSON.stringify(user)}'>查看详情</button></div>`;});// 将拼接的 HTML 插入到页面中container.innerHTML = html;// 事件委托绑定点击事件container.addEventListener('click', function(event) {if (event.target && event.target.tagName === 'BUTTON') {const userData = event.target.getAttribute('data-user');const user = JSON.parse(userData); // 解析 JSON 字符串为对象console.log(user);console.log(`用户详情: ${user.name}, 年龄: ${user.age}, 职业: ${user.job}`);}});</script>
</body>
</html>

打印结果:

说明:

  1. 嵌入 JSON 数据:在按钮的 data-user 属性中嵌入了整个用户对象,使用 JSON.stringify() 将对象转化为字符串。
  2. 提取 JSON 数据:在点击事件中,通过 getAttribute 获取 data-user 属性的值,并使用 JSON.parse() 将其转化回对象形式使用。
http://www.lryc.cn/news/430706.html

相关文章:

  • 服务器加速器如何应对大规模并行计算需求
  • C++/Qt 多媒体(续四)
  • 怎样把flv转换成mp4格式?8种可以推荐的视频转换方法
  • 【2024数学建模国赛赛题解析已出】原创免费分享
  • Windows安装使用Docker
  • 【wsl2】从C盘迁移到G盘
  • 低代码技术新趋势——逆向工程
  • HTTP 二、进阶
  • 【Hot100】LeetCode—35. 搜索插入位置
  • 001集——CAD—C#二次开发入门——开发环境基本设置
  • Java类和对象——快速自动生成带参数的结构
  • Python操作数据库的ORM框架SQLAlchemy快速入门教程
  • 提交MR这个词儿您知道是什么意思吗?
  • Linux sentinel写法
  • 顶级域名服务器 - TLD服务器
  • 【LeetCode】01.两数之和
  • 便宜好用的云手机盘点
  • pdf怎么压缩小一些?推荐的几种PDF压缩方法
  • Linux终端简单配置(Vim、oh-my-zsh和Terminator)
  • js模块化 --- commonjs规范 原理详解
  • kubeadm部署 Kubernetes(k8s) 高可用集群【V1.28 】
  • 【MySQL】MySQL Workbench下载安装、环境变量配置、基本MySQL语句、新建Connection
  • CrowdStrike 的失败如何凸显了左移测试的重要性
  • HarmonyOS开发实战( Beta5版)高负载组件的渲染实践规范
  • NLP从零开始------16.文本中阶处理之序列到序列模型(1)
  • 【匈牙利汽车产业考察,开启新机遇】
  • 并行程序设计基础——动态进程管理
  • C# 字符串(String)使用教程
  • django之ForeignKey、OneToOneField 和 ManyToManyField
  • java.lang.IndexOutOfBoundsException: setSpan ( 0...x ) ends beyond length X