将HTML属性转换为Javascript对象

时间:2018-06-25 11:37:58

标签: javascript jquery json

我无法将HTML数据属性转换为Javascript对象。

这是我的工作:

该属性如下:

<a id="stringObj" data-string="{'Foo':'Bar'}">Some A-Tag</a>

在Javascript / JQuery中,我按如下操作:

var obj = $("#stringObj").data('string').replace(/'/g,"\"");
obj = JSON.stringify(obj);
obj = JSON.parse(obj);

我只是使用JSON.stringify方法获得干净的结果,但这并不重要。我还在结果上尝试了“ eval”,但在console.log(typeof obj)测试中它一直是“ string”。

如何从属性中获取对象,以便像alert(obj.Foo);一样使用它?

4 个答案:

答案 0 :(得分:3)

使用jQuery.data()时,使用有效JSON 时,默认情况下它将作为对象返回。如有可能,请尝试交换"'

$(function() {
  var data = $("#stringObj").data("string");
  console.log(typeof data);
  console.log(data.Foo);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a id="stringObj" data-string='{"Foo": "Bar"}'>Some A-Tag</a>

如果您由于某些原因无法更改HTML代码(无法交换'"),请使用以下代码段:

$(function() {
  var data = $("#stringObj").data("string").replace(/'/g, '"');
  data = JSON.parse(data);
  console.log(typeof data);
  console.log(data.Foo);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a id="stringObj" data-string="{'Foo': 'Bar'}">Some A-Tag</a>

答案 1 :(得分:2)

您可以这样操作:https://codepen.io/creativedev/pen/NzBvYZ

var obj = $("#stringObj").data('string').replace(/'/g,"\"");
obj = JSON.parse(obj);
alert(obj.Foo);

答案 2 :(得分:1)

您也可以不使用jQuery

var stringAttr = document.getElementById("stringObj").dataset.string.replace(/'/g,"\"");
var myObj = JSON.parse(stringAttr);
console.log(myObj.Foo);

答案 3 :(得分:0)

我刚刚删除了JSON.stringify,并且现在可以使用了。 当然,我之前对其进行了几次测试,但均未成功,但它确实因某些原因而起作用:D-谢谢。