2016-06-18 146 views
2

我试图将内容追加到模板标记中。我使用将内容添加到模板标记

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用于Ajax响应每个元素创建的div,并将它附加到片段,片段然后将其附加到的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的孩子,如果altought我打印的孩子它打印正确的div号。

为什么将isnt内容添加到模板中?这是一种正确的方式还是有任何具体的方式如何正确地将内容追加到模板?

回答

0

如果你只使用一个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()就是指它。

+0

这是不是这样的,当我试图提醒(x.children.length)它输出的孩子适量。也只是为了确保我尝试过,行为仍然一样。 – Darlyn

0

你应该追加片段template.content,而不是template

template.content.appendChild(x)