2017-02-21 6 views
5

का उपयोग करके एक ईएस 6 टेम्पलेट स्ट्रिंग को HTML तत्व में कनवर्ट करें क्या एक HTML टेम्पलेट स्ट्रिंग को एचटीएमएल तत्व में परिवर्तित करने के लिए सादे पुराने वेनिला जावास्क्रिप्ट (सैन्स फ्रेमवर्क) का उपयोग करने का कोई तरीका है?वेनिला जावास्क्रिप्ट

यहाँ मैं क्या चीजें हैं जो मैं कोशिश की है है या नहीं:

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); 
} 

इस कार्यान्वयन काम करता है, लेकिन यह innerHTML का उपयोग करता है और एक अतिरिक्त लिपटे div कहते हैं। अतिरिक्त div के बिना ऐसा करने का कोई तरीका है?

+1

आप क्यों नहीं बस .appendChild (templateString) और 'परीक्षण' संदर्भ – Steveo

+0

या बस कर नहीं निकालते हैं 'स्थिरांक परीक्षण = document.createElement और है कि मैं के लिए क्या देख रहा था ('div'); test.innerHTML = prop.text; 'कोई स्ट्रिंग इंटरपोलेशन की आवश्यकता नहीं है ... –

+0

क्या आप सुनिश्चित हैं कि' prop.text' को मनमाने ढंग से HTML रखने की अनुमति है? – Bergi

उत्तर

8

आप insertAdjacentHTML उपयोग कर सकते हैं:

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>

मुझे लगता है कि स्ट्रिंग चर templateString फोन नहीं होगा के रूप में वहाँ एक चर एक टेम्पलेट स्ट्रिंग है कि जैसी कोई चीज नहीं है। टेम्पलेट तार एक शाब्दिक संकेत हैं, लेकिन जब मूल्यांकन किया जाता है, तो वे सादे तार होते हैं। वेरिएबल में कुछ भी नहीं है जिसमें "templateness" का कुछ जादुई निशान है।

+1

यह सही है, धन्यवाद! –

संबंधित मुद्दे