无法将HTML数据属性值解析为Javascript对象

时间:2015-10-25 08:09:39

标签: javascript jquery html json

我有JS和HTML代码,如下所示



var a=$("li").data("item");
console.log($("li").data("item").type);

  <li  data-item="{&quot;contentId&quot; : 5,&quot;type&quot; : &quot;PROGRAM&quot;, section_type:  &quot;PROGRAM_SECTION&quot;, &quot;active&quot;:&quot;false&quot;  }">data</li>
&#13;
&#13;
&#13;

尝试使用代码

在data-item属性中获取JS Object的type属性值
var a=$("li").data("item");
console.log($("li").data("item").type);

但是我将var a=$("li").data("item");作为字符串,即使JSON.parse(a)也无法正常工作,请参阅屏幕截图enter image description here和codepen http://codepen.io/shmdhussain/pen/VvXKLr

请帮我解析数据。提前感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

有几个问题......请尝试使用下面的HTML和JS。

HTML

<li data-item="{&quot;contentId&quot; : 5,
&quot;type&quot; : &quot;PROGRAM&quot;,
&quot;section_type&quot;:  &quot;PROGRAM_SECTION&quot;, 
&quot;active&quot; :&quot;false&quot;} ">data</li>

JS

var item = $("li").data("item");
var json = JSON.parse(item);    
$("li").text(json.type);

答案 1 :(得分:1)

好的,所以我发现了一些错误:

1:应该是

$("li").data("sna-item");

此外,您的data-sna-item中有错误(这是无效的json)。 section_type

附近没有引号

这是一个更新的代码集:http://codepen.io/anon/pen/gaewrd

答案 2 :(得分:1)

问题是您的数据在使用时应使用&quot;“因此您需要将&quot;替换为”

使用此

JSON.parse($("li").data("item").replace(/&quot;/g,'"')).type;

假设$("li").data("item")产生您想要解析的数据。