2016-06-18 200 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)