2017-10-12 4 views
0

Ich habe die separate Vorlagendatei (html). Ich brauche das HTML-Objekt mehrmals auf die Hauptseite erzeugt zu laden, so dass ich das nächste, was:HTMLElement wird dem DOM nicht hinzugefügt. Warum?

const path = "/templates/news.tpl.html"; 
const template = await Dbc.Dom.loadTemplate({ 
    id : "news-block", 
    path: path 
}); 

document.body.appendChild(template); 
document.body.appendChild(template); 

Zuerst wird die Funktion, den Inhalt aus der Datei abruft, und fügen Sie den aktuellen DOM. Als Rückgabewert wird das hinzugefügte Objekt HTMLElement zurückgegeben.

Ich versuche, dieses Objekt danach wieder hinzuzufügen, dann verwende ich den Standardweg, über die document.body.appendChild() Funktion, aber ich kann nur das einzelne Vorlagenobjekt im aktuellen DOM sehen.

+0

So _one_ 'HTMLElement' hinzugefügt _is_ werden, nicht wahr? Dann funktioniert alles wie erwartet. Sie können das gleiche Objekt nicht zweimal anhängen und erwarten, dass es doppelt vorhanden ist. Wenn Sie zwei Elemente haben möchten, müssen Sie ein zweites erstellen. Beim Anhängen wird dem DOM nur dann ein neues Objekt hinzugefügt, wenn es zuvor nicht im DOM enthalten war. Ein erneutes Anhängen ändert seine Position im DOM, wenn überhaupt. – Xufox

+0

Wie soll ich ein anderes Objekt erstellen, gibt es eine Funktion zum Klonen der erstellten Vorlage? – Jack

Antwort

2

Append Kind ersetzt nur Ihr Objekt, wenn Sie versuchen, einige Male Ihr Objekt an einem letzten Ort erscheint. Sie sollten cloneNode

Art verwenden:

document.body.appendChild(template); 
document.body.appendChild(template.cloneNode(true)); 
Verwandte Themen