2017-02-21 14 views
5

Bir html şablon dizgisini bir Html öğesine dönüştürmek için düz eski vanilya javascript (çerçeve çerçevelerini) kullanmak için bir yöntem var mı?Bir es6 şablon dizgisini vanilya javascript kullanarak html öğesine dönüştürün

İşte ben denedim şeyler var ne:

function renderBody(selector = body, template) { 
    const prop.text = 'foobar'; 
    const templateString = `<div id='test'>${prop.text}</div>` 
    const test = document.createElement('div'); 
    test.innerHTML = templateString; 
    document.querySelector(selector).appendChild(test); 
} 

Bu uygulamanın çalıştığından ancak innerHTML kullanan ve ekstra sarılı div ekler. Ekstra div olmadan bunu yapmanın bir yolu var mı?

+1

Neden sadece .appendChild (templateString) ve – Steveo

+0

Ya da sadece yapmak 'testin' başvuruları çıkarmayın 'const testi = document.createElement Ve bu i aradığı şeyi var ('div'); test.innerHTML = prop.text; 'String interpolasyon gerekli değil ... –

+0

Prop.text''in keyfi bir html içermesine izin verildiğinden emin misiniz? – Bergi

cevap

8

Sen insertAdjacentHTML kullanabilirsiniz: Bir şablonu dizesi bir değişken diye bir şey olmadığı için

function renderBody(selector = 'body', template) { 
 
    const prop = { text: 'foobar' }; 
 
    const html = `<div id='test'>${prop.text}</div>`; 
 
    document.querySelector(selector).insertAdjacentHTML('beforeend', html); 
 
} 
 

 
renderBody();
div { border: 1px solid }
<h1>test</h1>

O dize değişkeni templateString demezdim. Şablon dizgileri, bir harf biçimidir, ancak değerlendirildiğinde, düz dizelerdir. Değişkende "tembellik" gibi bazı sihirli izlere sahip hiçbir şey yoktur.

+1

Bu mükemmel, teşekkürler! –

İlgili konular