IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: appendChild na template

Aktivity
Avatar
saeQ
Člen
Avatar
saeQ:18.6.2016 17:58

Ahoj ,

mam template tag a snazim sa mu appendnut child elementy

pouzivam

getcontent("clients.json").then(function(x){
   obj = JSON.parse(x);
}).then(function(x){

   var x = createFullList(obj,docFragment);
   filtered = obj;
   aside.classList.remove("not");
   return x;
}).then(function(x){
   template   .appendChild(x);
   var clone = document.importNode(template.content, true);
   alert(clone.children.length);
   aside.appendChild(clone)
});

kde getcontent vrati obsah json file , a obj je objekt ktory ho drzi , createFullList prejde cely objekt a pre kazdy element vytvori html strukturu ktora sa appedne do html fragmentu a nasledovne sa html fragment appendne do div elementu.

Co mi robi problem je templata , ked appendnem ten div do nej , nic sa nespravi , pritom div obsahuje spravny pocet child elementov.

Je niekde kde som spravil chybu pri template? kod klasicky funguje ak to neapendnem do templaty ale do hocijakeho ineho elementu.

 
Odpovědět
18.6.2016 17:58
Avatar
Odpovídá na saeQ
Neaktivní uživatel:18.6.2016 18:12

A jsi si jistý že v template máš skutečně požadovaný element ? Zkoušel jsi ho vypsat do konzole a zkontrolovat to?

Editováno 18.6.2016 18:13
Nahoru Odpovědět
18.6.2016 18:12
Neaktivní uživatelský účet
Avatar
saeQ
Člen
Avatar
Odpovídá na Neaktivní uživatel
saeQ:18.6.2016 18:39

O to ide , nic sa do templaty nehodi

 
Nahoru Odpovědět
18.6.2016 18:39
Avatar
Odpovídá na saeQ
Neaktivní uživatel:18.6.2016 20:55

A postupuješ podle nějakého návodu? Je to kód nějakého frameworku? Evidentně tam používáš nějakou custom funkci na getContent, nejspíš nějakej ajax obalenej promisou, takže přidej trochu informací a dáme to dohromady.

Nahoru Odpovědět
18.6.2016 20:55
Neaktivní uživatelský účet
Avatar
saeQ
Člen
Avatar
saeQ:18.6.2016 21:46

Navod neni ziadny , funkcia getContent je basic ajax call

function getcontent(url) {
  return new Promise(function(resolve, reject) {
      var xhttp = new XMLHttpRequest();
      xhttp.open("GET", url, true);
      xhttp.onload = function() {
        if (xhttp.status == 200) {
          resolve(xhttp.response)
        } else {
          reject(Error(xhttp.responseText))
        }
      }
      xhttp.send();
    })
  }

funkcia createFullList jednoducho loopne array objektov , a pre kazdy element spravi html struturu tj div a v nom nejaky ten paragraph a appendne to to html fragmentu , v zapeti ten html fragment appendne do divu a ten div je aj returne.

 
Nahoru Odpovědět
18.6.2016 21:46
Avatar
saeQ
Člen
Avatar
Odpovídá na Neaktivní uživatel
saeQ:18.6.2016 21:58

nedal som odpovedat -.-

 
Nahoru Odpovědět
18.6.2016 21:58
Avatar
Odpovídá na saeQ
Neaktivní uživatel:18.6.2016 22:12

Mě přijde vesměs všecko funkční, teda na první pohled nevidím nějakou chybu, což souhlasí s tvým popisem. Takže se zaměřím na proměnnou template, očekával bych, že uvnitř proměnné template bude DOM object, je tomu skutečně tak? Když dáš console.log(tem­plate); tak co se ti zobrazi v konzoli? PS: netuším jestli konzoli používáš kdyby něco F12 a kliknout na Console

Nahoru Odpovědět
18.6.2016 22:12
Neaktivní uživatelský účet
Avatar
saeQ
Člen
Avatar
Odpovídá na Neaktivní uživatel
saeQ:18.6.2016 22:38

yep , ked dam

console.log(template.nodeName)

normalne vypise TEMPLATE.

Co som cital dokumentaciu , template sa nerenderuje az kym ju neinicializujes , teraz ale neviem ci sa to berie tak , ze ju inicializujes tym , ze accesnes jej child element ( v mojom pripade nema ziadne child elementy , tie chcem prave appendnut ) , alebo staci vytvorit jej obsah

Editováno 18.6.2016 22:38
 
Nahoru Odpovědět
18.6.2016 22:38
Avatar
Odpovídá na saeQ
Neaktivní uživatel:18.6.2016 23:07

Trochu jsem si nastudoval template element a myslím, že jsi to špatně pochopil. Template element funguje stejně jako template na serveru, takže do něj nic nevkladas, template v HTML kodu slouzi pro to, abys tam už na začátku vložil nějakou strukturu, pak si ji vzal za běhu, naklonoval obsah, nacpal ten obsah nekam do body a nastavil uz konkretni data, jako textový obsah, atributy a tak, takze ty nechces appendnout do template, ty chces vzit obsah template, naklonovat si ho do body, nebo do nejakyho divu a pak nastavit obsah ... takze si nejsem uplne jistej, jestli ten tvuj kus kodu, takhle dava smysl, minimalne k tomu co delas, nepotrebujes template, ta se hodi, pokud mas opakujici se treba strukturu, do ktery jen cpes data a nastavujes atributy, jako treba pro obrazky, videa, atd ... tady je super popis http://www.html5rocks.com/…ts/template/

Editováno 18.6.2016 23:09
Nahoru Odpovědět
18.6.2016 23:07
Neaktivní uživatelský účet
Avatar
Odpovídá na saeQ
Neaktivní uživatel:21.6.2016 2:52

Tak jak? Pomohlo?

Nahoru Odpovědět
21.6.2016 2:52
Neaktivní uživatelský účet
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 10.