#javascript #jquery #json #function #recursion
#javascript #jquery #json #функция #рекурсия
Вопрос:
У меня возникли проблемы с рекурсией javascript. Вот код
_parseJson: function($object, $j_array) {
for (i = 0; i < $j_array.length; i ) {
var $el = document_designer.createElement($j_array[i]);
$object.append($el);
if ($j_array[i].elements.length > 0) {
this._parseJson($el, $j_array[i].elements);
}
}
}
Обе функции ( parseJson
и createElement
) находятся под объектом с именем «document_designer». Вот createElement
createElement: function(n) {
var $element = $('<' n['tag'] '/>');
document_designer.oi ;
if (n.id == null) {
$element.attr('id', '____element' document_designer.oi);
}
document_designer.processElement($element, n); // you may ignore this line
return $element;
}
У функции processElement нет проблем. Вы можете даже игнорировать эту строку
document_designer._parseJson(document_designer.$preview, json_element)
// $preview is an created object in the `body`
и мой родительский JSON: http://www.jsoneditoronline.org/?id=c99c77938e5edf91996e4bb267fd09b1
Создаются корневые элементы и дочерние дочерние элементы first main, но дочерние элементы других корневых элементов не создаются
Комментарии:
1. В чем проблема, с которой вы столкнулись?
2. Создаются корневые элементы и дочерние дочерние элементы first main, но дочерние элементы других корневых элементов не создаются
3. @ahmetertem, пожалуйста, предоставьте образец вашего json.
4. @autoboxer jsoneditoronline.org/?id=c99c77938e5edf91996e4bb267fd09b1
5. @autoboxer Это по ссылке, которую он предоставил. Это действительно долго.
Ответ №1:
вы забыли var
в
for (i = 0; i < $j_array.length; i ) {
Итак, вы используете один и тот же глобальный i
для всех вызовов
изменить на:
for (var i = 0; i < $j_array.length; i ) {
Кстати, мне нравится ваш код.
Комментарии:
1. Спасибо, приятель. Я даже не думал, что это может быть… Я ценю это
2. @ahmetertem Представьте, что это происходит в большом JS-файле. Очень трудно найти.
3. Я опубликовал только проблемные части 🙂 В моем файле уже более 500 строк. Еще раз спасибо, чувак