我正在尝试将内容附加到模板标记中。我正在使用
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个孩子,如果我打印div的孩子它打印正确的数字。
为什么不将内容添加到模板中?这是正确的方法,还是有任何具体方法如何正确地将内容附加到模板中?
答案 0 :(得分: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()
引用它的范围内不可用的变量。
答案 1 :(得分:0)
您应该将片段附加到template.content
而不是template
:
template.content.appendChild( x )