Создание многоуровневого фрагмента документа

Поэтому я пытаюсь создать многомерный фрагмент документа и сталкиваюсь с чем-то вроде дорожного блока. Я хочу добавить только один фрагмент документа, чтобы создать только одну перекомпоновку. Я в основном пытаюсь создать x количество div с y числом div внутри них. Сначала я хотел добавить div в новый элемент, но он, похоже, не работает. У меня просто есть 2 для утверждений, первое - это большие div, которые будут находиться внутри родителя, а второе - для маленьких div, которые будут внутри больших div, которые попадут внутрь родителя. Я думаю, что я ошибаюсь, когда после создания фрагмента документа, в который помещаются все элементы div, я пытаюсь вставить его в элемент, которого еще нет в DOM. Я не уверен, хотя. Любая обратная связь будет полезна. Мне еще предстоит найти статью о создании многоуровневых фрагментов документов.

function addDivs(element) {
    var newDiv, fragment = document.createDocumentFragment();
    for (var i = 0; i < numberOfPics; i++) {
        newDiv = document.createElement('div');
        var newBabyDiv, newBabyFragment = document.createDocumentFragment();
        for(var i1 = 0; i1 < o.sliceX*o.sliceY; i1++){
            newBabyDiv = document.createElement('div');
            newBabyFragment.appendChild(newBabyDiv);
        }
        newDiv.append(newBabyFragment);
        newDiv.id = (picIdRoot+i);
        newDiv.className = (o.allPictures);
        if (i < numberOfPics - 3){
        }else if(i == numberOfPics - 2){
            newDiv.className = (o.allPictures+" "+o.currentPic);
        }else if(i == numberOfPics - 1){
            newDiv.className = (o.allPictures+" "+o.currentPic+" "+o.picAfterCurrent);
        }else{}
        fragment.appendChild(newDiv);
    }

    //fill the style element with text
    var style = document.createElement("style");
    style.id = "slideShow-styling";
    fragment.appendChild(style);

    //append to slideshow container
    slideShowContainer.append(fragment);
}

РЕДАКТИРОВАТЬ

for(var i1 = 0; i1 < o.sliceX*o.sliceY; i1++){
    newDiv.append(document.createElement('div'));
}

это редактирование, к сожалению, не работает

1 ответ

Я знаю, что я опаздываю на вечеринку, и проблема сама по себе, вероятно, была решена (или оставлена) давно.

Отредактированная часть

for(var i1 = 0; i1 < o.sliceX*o.sliceY; i1++){
    newDiv.append(document.createElement('div'));
}

Это не работает, потому что newDiv здесь нет append метод, это DOMElement, а не что-нибудь подобное jQuery. Правильный синтаксис для работы с узлами DOMElement будет

for(var i1 = 0; i1 < o.sliceX*o.sliceY; i1++){
    newDiv.appendChild(document.createElement('div'));
}

Абсолютно не связан с заданным вопросом

Пока я в этом, вы должны понимать, o.sliceX*o.sliceY часть оценивается для каждой итерации цикла, я бы изменил это на

for(var i1 = 0, len = o.sliceX*o.sliceY; i1 < len; i1++){...}
Другие вопросы по тегам