доступ к элементу массива JSON из другого массива - PullRequest
1 голос
/ 23 июня 2011

Я 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 к div в моем HTML с помощью:

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

Первые два работают, когда третий отсутствует. Наличие третьего ломает все. Что я делаю не так?

Ответы [ 4 ]

3 голосов
/ 23 июня 2011

Это

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

Производит

Uncaught Error: NOT_FOUND_ERR: DOM Exception 8

Итак, ваша проблема в том, что вы передаете массив строк вфункция jQuery .html(), которая явно не справляется с этим.Превратите его в строку перед тем, как передать, что-то вроде

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

должно работать.

Два действительных аргумента для .html() из http://api.jquery.com/html/:

html( htmlString  )
    .html( htmlString )
    .html( function(index, oldhtml) )
0 голосов
/ 23 июня 2011

Пара: "super":"Superman" вызовет пробники, так как super зарезервировано, поэтому comics.super вызовет ошибку как минимум в IE.

Переименуйте ее или используйте comics["super"] обозначение.

0 голосов
/ 23 июня 2011

Убедитесь, что comics инициализирован до childhood_heroes.

И не для того, чтобы придираться, но ни одна из тех вещей, которые вы определили, не является массивами JavaScript или JSON. Это всего лишь «массивы» в очень широком смысле «ассоциативных массивов» .

0 голосов
/ 23 июня 2011

Вы получаете доступ к массиву, где, возможно, вам нужна строка, вы можете использовать join (), чтобы поместить все записи в массиве супергероев в строку:

$('#supers').html(childhood_heroes.superhero.join(", "));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...