Javascript 用单引号设置属性

rya*_*dlf 5 javascript

似乎默认情况下 javascript 使用双引号附加属性。但是,在我的情况下,我试图将 json 字符串附加到数据属性,而双引号会干扰 json。

var json = {"foo":"bar"}
var el = document.getElementById("someElement");
el.setAttribute("data-json", JSON.stringify(json)); //<div data-json="{"foo":"bar"}">
Run Code Online (Sandbox Code Playgroud)

如何使用单引号附加属性?

小智 6

这么说是不正确的

默认情况下,javascript 使用双引号附加属性。

属性只是一个字符串。属性值本身不包括周围的引号。引号只不过是表示字符串文字的语法。您在其中看到的属性周围的外部引号

<div data-json="{"foo":"bar"}">
Run Code Online (Sandbox Code Playgroud)

不存在于属性值中;为了您的视觉方便,它们只是在打印属性时由控制台插入。没有什么“干扰 JSON”。可以按JSON.parse原样检索和解析属性值,无需再费力。

var json = {"foo":"bar"}
var el = document.getElementById("someElement");
el.setAttribute("data-json", JSON.stringify(json));

// now, parse the attribute
>> JSON.parse(el.getAttribute('data-json'))
<< Object {foo: "bar"}
Run Code Online (Sandbox Code Playgroud)