我是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);
});
当第三个缺席时,前两个工作。第三个的存在打破了一切。我做错了什么?
答案 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"]
表示法。