я не мог найти ответ, который обрабатывается циркуляры, и я решил сделать это без каких-либо ненужных пишет DOM. Кроме того, я не следил за точной надписью, которую запросил ОП, потому что я чувствовал, что таблицы вложенности были более удобны для рекурсивной операции, такой как эта, и служат почти той же визуальной цели.
Итак, вот функция я создал:
function dataToTable (data) {
var storage = [];
return (function buildTable (data) {
var table = '<table><tbody>';
var name, value;
// Add the object/array to storage for cirular detection.
storage.push(data);
for (name in data) {
value = data[name];
table += '<tr><td>' + name + '</td><td>';
// If the value is an object we've put in storage (circular)
if (storage.indexOf(value) !== -1) {
table += '<em>Circular</em>';
} else if (typeof value === 'object') {
table += buildTable(value);
} else {
table += value;
}
table += '</td></tr>';
}
return table + '</tbody></table>';
}(data));
}
Вот это объект, который я использовал для теста:
var obj = {
a : {
x : 1,
y : 2,
z : 3
},
b : {
x : 1,
y : 2,
z : {
test1: 0,
test2: {
test3: 1,
test4: ['a','b','c']
}
}
}
};
obj.c = obj;
obj.b.z.test2.test4.push(obj.a);
функция превратит этот объект в HTML-таблицу. То, что вы делаете со столом, зависит от вас. На моей скрипке я использовал DOM, чтобы добавить таблицу в DIV (document.getElementById).
http://jsfiddle.net/5RhXF/1/
Я надеюсь, что вы найдете мое внедрение ясно.
UPDATE ::
Я решил проверить это на библиотеку JQuery, и это сработало! Кроме того, функции печатались как их значение toString без хорошего формата текста. Это имеет смысл, но не очень полезно. Итак, я думаю, что это хороший и простой способ просмотреть API-интерфейсы для фреймворков/библиотек и что-нет. Поэтому я добавил prettify для выделения синтаксиса функций, а также добавил проверку типов для функций в генераторе таблицы и быстрый класс, чтобы избавиться от границ вокруг поля prettify (так как уже есть граница на ячейке таблицы) , Если кто-то заинтересованы в версии, предназначенной для источника чтения/отладки, вот скрипка:
http://jsfiddle.net/5RhXF/7/
FYI, это не JSON, это просто объектный литерал. JSON - это формат обмена данными, такой как XML или CSV. –
вам нужно использовать стол. Просто используйте встроенные блоки div и установите правильный css. –
@OnurTOPAL Мой текущий фокус заключается в том, чтобы сделать это, тогда я сосредоточусь на том, чтобы сделать это без таблиц – Exception