从另一个数组访问JSON数组项

时间:2011-06-23 16:10:22

标签: javascript jquery arrays json

我是JS n00b,所以我很抱歉这么简单。 (这很简单,其余的SO提供的答案比我需要的更复杂。)我有一个像这样的JSON数组:

var comics = {"spider":"Spiderman", "bat":"Batman", "super":"Superman", "aqua":"Aquaman"};

我想从另一个数组访问该数组中的项目,如下所示:

var childhood_heroes = {"fire":"Firefighters", "jordan":"Michael Jordan", "superhero":[comics.super, comics.bat]};

我用jQuery将它附加到我的HTML中的div:

$('#which_heroes').click(function() {
    $('#jobs').html(childhood_heroes.fire);
    $('#sports').html(childhood_heroes.jordan);
    $('#supers').html(childhood_heroes.superhero);
});

当第三个缺席时,前两个工作。第三个的存在打破了一切。我做错了什么?

4 个答案:

答案 0 :(得分:3)

$('body').html(["one","two"]);

可生产

Uncaught Error: NOT_FOUND_ERR: DOM Exception 8

所以,你的问题是你将一个字符串数组传递给jQuery .html()函数,这显然不能很好地处理它。在传递之前把它变成一个字符串,比如

$('#supers').html(childhood_heroes.superhero.join(', '));

应该有用。

来自http://api.jquery.com/html/.html()的两个有效参数是

html( htmlString  )
    .html( htmlString )
    .html( function(index, oldhtml) )

答案 1 :(得分:0)

您正在访问可能需要String的数组,您可以使用join()将超级英雄数组中的所有条目放入字符串中:

$('#supers').html(childhood_heroes.superhero.join(", "));

答案 2 :(得分:0)

确保在comics之前初始化childhood_heroes

而不是挑剔,但你定义的东西都不是JavaScript或JSON数组。它们只是"associative arrays"非常宽松的“阵列”。

答案 3 :(得分:0)

对:"super":"Superman"会导致probs super被保留,因此comics.super至少会在IE中引发错误。

重命名,或使用comics["super"]表示法。