поэтому я пытаюсь создать многомерный фрагмент документа и нахожусь в небольшом дорожном блоке. Я хочу только добавить один фрагмент документа, чтобы создать только один повтор. Я в основном пытаюсь создать x число div с y количеством div внутри. Моя первоначальная мысль заключалась в том, чтобы добавить divs во вновь созданный элемент, но он, похоже, не работает. У меня просто есть 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'));
}
это редактирование, к сожалению, не работает
Я знаю, что опаздываю на вечеринку, и сама проблема, вероятно, была решена (или прекращена) с тех пор.
Отредактированная часть
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++){...}