似乎默认情况下 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)