HTML 具有嵌套属性的 SetAttribute
HTML SetAttribute with nested properties
我确定这在某处得到了回答,但我缺乏术语知识,无法找到查找的地方。
由于从服务器加载了一些 json 数据,我正在动态创建一些 Html。
我正在使用 createElement 和 setAttribute 创建 html 并将其附加到主体。
但是,我的动态 html 包含一个 "data-" 属性,该属性具有进一步的嵌套属性。一个示例最终目标是这样的:
<li>
<span class=item data-item='{"width": 100, "height": 100,
"properties": { "Name": "foo", "Surname": "bar" }}'></span>
</li>
我在运行时取得了一些成功:
li.setAttribute("data-item", '{"width": 100, "height": 100, "properties":
{ "Name": "foo", "Surname": "bar" }}');
但是当我开始在我的 java-脚本中的其他地方使用数据项时,属性被识别为字符串而不是对象。当我对 HTML 进行硬编码时,数据项作为对象正确加载。我假设它一定是因为我错误地设置了这个属性。
你可以用JSON.parse把它变成一个对象:
var result = JSON.parse('{"width": 100, "height": 100, "properties": { "Name": "foo", "Surname": "bar" }}');
// result.width => 100
// result.properties.Name => "foo" etc...
你得到的是一个字符串,因为 属性 被设置为一个字符串,你可以像这样在解析后将数据作为一个对象获取:
var li = document.createElement('li');
li.id = "li1";
li.setAttribute("data-item", '{"width": 100, "height": 100, "properties": { "Name": "foo", "Surname": "bar" }}');
li.innerHTML = "SAMPLE li";
document.body.appendChild(li);
var data = document.getElementById('li1').getAttribute('data-item');
data = JSON.parse(data);
console.log(data);
我确定这在某处得到了回答,但我缺乏术语知识,无法找到查找的地方。
由于从服务器加载了一些 json 数据,我正在动态创建一些 Html。
我正在使用 createElement 和 setAttribute 创建 html 并将其附加到主体。
但是,我的动态 html 包含一个 "data-" 属性,该属性具有进一步的嵌套属性。一个示例最终目标是这样的:
<li>
<span class=item data-item='{"width": 100, "height": 100,
"properties": { "Name": "foo", "Surname": "bar" }}'></span>
</li>
我在运行时取得了一些成功:
li.setAttribute("data-item", '{"width": 100, "height": 100, "properties":
{ "Name": "foo", "Surname": "bar" }}');
但是当我开始在我的 java-脚本中的其他地方使用数据项时,属性被识别为字符串而不是对象。当我对 HTML 进行硬编码时,数据项作为对象正确加载。我假设它一定是因为我错误地设置了这个属性。
你可以用JSON.parse把它变成一个对象:
var result = JSON.parse('{"width": 100, "height": 100, "properties": { "Name": "foo", "Surname": "bar" }}');
// result.width => 100
// result.properties.Name => "foo" etc...
你得到的是一个字符串,因为 属性 被设置为一个字符串,你可以像这样在解析后将数据作为一个对象获取:
var li = document.createElement('li');
li.id = "li1";
li.setAttribute("data-item", '{"width": 100, "height": 100, "properties": { "Name": "foo", "Surname": "bar" }}');
li.innerHTML = "SAMPLE li";
document.body.appendChild(li);
var data = document.getElementById('li1').getAttribute('data-item');
data = JSON.parse(data);
console.log(data);