Я создаю сайт галереи с несколькими категориями и набором элементов в каждой категории.
План состоит в том, чтобы сгенерировать две переменные, которые удерживают текущую категорию (currentCategory
) и текущий элемент (currentItem
), передать jQuery для поиска этой категории в файле JSON, получить данные текущего элемента и сохранить все в массиве jQuery (currentContent
). Оттуда я просто получал доступ к массиву jQuery, когда это необходимо, вызывать нужную позицию внутри массива и загружать данные в DOM.
Моя проблема... ну, все. Я не могу получить доступ к JSON через динамическую переменную, не говоря уже о хранении извлеченных данных в массиве. Я читал много, много, maaaany учебников и дискуссий, но я даже не могу понять, какой учебник или обсуждение могут иметь отношение к моей проблеме, не говоря уже о применении этих знаний к моей проблеме.
Вот мой JSON файл (пока только с одной категорией):
{
"websites": [
{
"title": "Chains of Honor for 'Joomla'",
"code": "chains",
"desc": "Some sample text to explain what going on",
"items": "2"
},
{
"title": "Agar Teryn - Book of Tales",
"code": "agar",
"desc": "Some sample text to explain what going on",
"items": "2"
},
{
"title": "Minifolio for 'The Secretary'",
"code": "minifolio",
"desc": "Some sample text to explain what going on",
"items": "2"
},
{
"title": "Mirogreen for 'Wordpress'",
"code": "mirogreen",
"desc": "Some sample text to explain what going on",
"items": "2"
},
{
"title": "Lain Ardhon for 'phpBB3'",
"code": "ardhon",
"desc": "Some sample text to explain what going on",
"items": "3"
}
]
}
И немного jQuery у меня есть:
function getContent(currentItem,currentCategory,currentContent) {
$.getJSON('repository.json', function(data) {
global.currentContent = data.websites[currentItem];
console.log(global.currentContent);
});
};
Это легко, когда вы вызываете требуемый массив JSON по имени (data.websites
), но то, что мне нужно, и то, на что я надеялся, заключается в том, что было бы так же просто, как просто использовать data.variable[position]
чтобы получить данные, хранящиеся за выбранный элемент в текущей категории.
И прежде чем я забуду: как я могу назвать позицию внутри массива jQuery? Я думал, вы можете сделать это с помощью array[integer]
.
Это то, что вы ищете? FIDDLE
JS
mystuff =
{
"websites": [
{
"title": "Chains of Honor for 'Joomla'",
"code": "chains",
"desc": "Some sample text to explain what going on",
"items": "2"
},
{
"title": "Agar Teryn - Book of Tales",
"code": "agar",
"desc": "Some sample text to explain what going on",
"items": "2"
},
{
"title": "Minifolio for 'The Secretary'",
"code": "minifolio",
"desc": "Some sample text to explain what going on",
"items": "2"
},
{
"title": "Mirogreen for 'Wordpress'",
"code": "mirogreen",
"desc": "Some sample text to explain what going on",
"items": "2"
},
{
"title": "Lain Ardhon for 'phpBB3'",
"code": "ardhon",
"desc": "Some sample text to explain what going on",
"items": "3"
}
]
};
$('#selectme, #wordme').change(function(){
firstnumber = $('#selectme').val();
firstname = $('#wordme').val();
var mytest = 'mystuff.websites[' + firstnumber + '].' + firstname;
$('.putmehere').html( eval(mytest) );
});
Изменение: 1. Не думайте о jQuery, но просто подумайте о javascript (JavaScript Object Notation).
Самый высокий "уровень" - это имя переменной, поэтому все ваши методы доступа в этом случае должны начинаться с "mystuff".
Следующий нижний уровень - это слово перед ": [" - таким образом, после самого высокого уровня вы помещаете "веб-сайты". - Итак, мистик.
Затем он становится интересным для "веб-сайтов", существует целая серия {}, и каждый из них имеет "число", начинающееся с нуля, поэтому вам нужно выбрать число, соответствующее номеру "{}" -.websites [х]. Конкретный пример "mystuff.websites [0]" относится к первому набору значений в квадратных скобках.
В каждом наборе скобок '{}' есть "имя" и "значение" - "название": "lain Ardhon для" phpBB3 "". Таким образом, вы выбираете "имя", и поэтому определяется ваше значение. Конкретный пример 'mystuff.websites [0].code' = "цепочки"
Я установил прикрепленный скрипт, чтобы вы могли посмотреть на полный массив (массив всегда должен быть до вашего кода, который обращается к массиву), тогда вы можете выбрать "номер" {} и "имя" переменная.