Добавление содержимого в тег шаблона
Я пытаюсь добавить контент в тег шаблона. я использую
getcontent("clients.json").then(function(x){
obj = JSON.parse(x);
}).then(function(x){
var x = createFullList(obj,docFragment);
filtered = obj;
return x;
}).then(function(x){
template .appendChild(x);
var clone = document.importNode(template.content, true);
alert(clone.children.length);
aside.appendChild(clone)
});
getcontent - это ajax-вызов, который возвращает ответ, ответ анализируется и сохраняется как объект в переменной obj,
createFullList создает div для каждого элемента в ответе ajax и добавляет его во фрагмент, затем фрагмент добавляется в div, который также возвращается,
function createFullList( obj , fragment ){
var aside = document.getElementsByClassName("one")[0];
for( x in obj ){
createInfoElement( fragment , obj[x].general , obj[x].job , x);
}
var div = document.createElement("div");
div.appendChild(fragment);
deleteKid( aside , 1 );
return div;
}
Что меня беспокоит, так это добавление в шаблон, это не так, когда я пытаюсь скопировать его содержимое, он говорит, что у него 0 детей, несмотря на то, что если я печатаю детей в div, он печатает правильное число.
Почему контент не добавляется в шаблон? Это правильный путь или есть какой-то конкретный способ, как правильно добавить контент в шаблон?
2 ответа
Вы должны добавить фрагмент в template.content
вместо template
:
template.content.appendChild( x )
Что делать, если вы используете только один then()
, вот так:
var obj;
getcontent("clients.json").then(function(x){
obj = JSON.parse(x);
}).then(function(){
var x = createFullList(obj, docFragment);
filtered = obj;
template.appendChild(x);
var clone = document.importNode(template.content, true);
alert(clone.children.length);
aside.appendChild(clone)
return(x);
});
Я полагаю, что вы пытаетесь сослаться на переменную, которая недоступна в области, которая template.appendChild()
ссылается на это.