为了账号安全,请及时绑定邮箱和手机立即绑定

在没有 jQuery 的情况下将对象存储在数据属性中

在没有 jQuery 的情况下将对象存储在数据属性中

狐的传说 2021-06-16 10:13:59
我的问题基本上就像这个问题。我只是想知道,是否有办法在没有 jQuery 的情况下实现这一点。以下代码不起作用。我也用数组尝试过它,但就像存储为字符串的对象一样。是我做错了什么,还是在普通的 javascript 中是不可能的?var div = document.getElementById("testDiv");var obj = {name: "Test1", value: 100};div.setAttribute("data-obj", obj);var arr = [59, 40, 3, 2, 1, 0];div.setAttribute("data-arr", arr);console.log("Object-Value: "+div.dataset.obj+"; Type: "+(typeof div.dataset.obj)+"; Name: "+div.dataset.obj.name);console.log("Array-Value: "+div.dataset.arr+"; Type: "+(typeof div.dataset.arr)+"; Third Value: "+div.dataset.arr[2]);<div id="testDiv">This is a test.</div>
查看完整描述

2 回答

?
长风秋雁

TA贡献1757条经验 获得超7个赞

JSON.stringify()在将数据存储在属性中之前使用。它基本上是将数据序列化为字符串。


var div = document.getElementById("testDiv");

var obj = JSON.stringify({name: "Test1", value: 100});

div.setAttribute("data-obj", obj);


var arrayAsJSON = JSON.stringify([59, 40, 3, 2, 1, 0]);

div.setAttribute("data-arr", arrayAsJSON);

然后JSON.parse()在获取属性值之后和呈现它之前使用。这将根据您的情况将其反序列化回 javascript 对象、数组或简单值。


查看完整回答
反对 回复 2021-06-18
?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

您需要使用JSON.stringify(和parse读取)将对象/数组更改为 json(字符串)


var obj = {name: "Test1", value: 100};

var arr = [59, 40, 3, 2, 1, 0];


testDiv.dataset.obj = JSON.stringify(obj);

testDiv.dataset.arr = JSON.stringify(arr);


console.log( JSON.parse(testDiv.dataset.obj).name );

console.log( JSON.parse(testDiv.dataset.arr)[2] );

<div id="testDiv"></div>


查看完整回答
反对 回复 2021-06-18
  • 2 回答
  • 0 关注
  • 115 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信