इस HTML स्ट्रिंग को कैसे जोड़ें
var str = '<p>Just some <span>text</span> here</p>';
DIV के साथ ID 'test'
जो DOM में है?
(Btw div.innerHTML += str;
स्वीकार्य नहीं है।)
इस HTML स्ट्रिंग को कैसे जोड़ें
var str = '<p>Just some <span>text</span> here</p>';
DIV के साथ ID 'test'
जो DOM में है?
(Btw div.innerHTML += str;
स्वीकार्य नहीं है।)
जवाबों:
insertAdjacentHTML
यदि यह उपलब्ध हो तो उपयोग करें , अन्यथा किसी प्रकार की गिरावट का उपयोग करें। InsertAdjacentHTML सभी वर्तमान ब्राउज़रों में समर्थित है ।
div.insertAdjacentHTML( 'beforeend', str );
लाइव डेमो: http://jsfiddle.net/euQ5n/
insertAdjacentHTML
, के लिए अपील करने की तुलना में तेज़ है innerHTML
, क्योंकि insertAdjacentHTML
तत्व के मौजूदा बच्चों को क्रमबद्ध और प्रतिष्ठित नहीं करता है।
insertAdjacentHTML
परिवर्तित रूप तत्वों के मूल्यों को बनाए रखता है, जबकि innerHTML
तत्व का पुनर्निर्माण करता है और सभी प्रपत्र संदर्भ खो देता है।
क्या यह स्वीकार्य है?
var child = document.createElement('div');
child.innerHTML = str;
child = child.firstChild;
document.getElementById('test').appendChild(child);
jsFiddle ।
लेकिन , नील का जवाब एक बेहतर उपाय है।
innerHTML
?
insertAdjacentHTML
:।
AppendChild
(ई) क्रोम और सफारी पर अन्य समाधानों की तुलना में 2x से अधिक तेज है, insertAdjacentHTML
(एफ) फ़ायरफ़ॉक्स पर सबसे तेज़ है। innerHTML=
(बी) (साथ भ्रमित न करें +=
(ए)) सभी ब्राउज़रों पर दूसरा तेजी से समाधान है और यह ई और एफ की तुलना में अधिक उपयोगी है
Chrome 75.0.3770 (64-बिट), सफारी 11.1.0 (13604.5.6), फ़ायरफ़ॉक्स 67.0.0 (64-बिट) पर पर्यावरण (2019.07.10) मैको हाई सिएरा 10.13.4 सेट करें।
विचार innerHTML
एक मध्यस्थ तत्व पर उपयोग करना है और फिर अपने सभी बच्चे नोड्स को स्थानांतरित करना है जहां आप वास्तव में उन्हें चाहते हैं appendChild
।
var target = document.getElementById('test');
var str = '<p>Just some <span>text</span> here</p>';
var temp = document.createElement('div');
temp.innerHTML = str;
while (temp.firstChild) {
target.appendChild(temp.firstChild);
}
यह किसी भी घटना संचालकों को मिटा देने से बचता है, div#test
लेकिन फिर भी आपको HTML के एक स्ट्रिंग को जोड़ने की अनुमति देता है।
सही तरीका उपयोग कर रहा है insertAdjacentHTML
। फ़ायरफ़ॉक्स में पहले की तुलना में 8, आप उपयोग करने के लिए वापस गिर सकते हैं Range.createContextualFragment
यदि आपके str
कोई script
टैग नहीं है ।
यदि आपके टैग str
शामिल हैं script
, तो आपको script
टुकड़ा createContextualFragment
डालने से पहले लौटे हुए टुकड़े से तत्वों को निकालना होगा । अन्यथा, स्क्रिप्ट चलेंगे। ( insertAdjacentHTML
लिपियों को अप्राप्य बनाता है।)
createContextualFragment
। मैं कुछ html बनाने के तरीके की खोज कर रहा था, जिसमें स्क्रिप्ट तभी चलती हैं जब उपयोगकर्ता कुकी सेट करने के लिए सहमत होता है।
त्वरित हैक :
<script>
document.children[0].innerHTML="<h1>QUICK_HACK</h1>";
</script>
मामलों का उपयोग करें :
1: .html फ़ाइल के रूप में सहेजें और क्रोम या फ़ायरफ़ॉक्स या एज में चलाएं। (IE अभ्यस्त काम)
2: http://js.do में उपयोग करें
कार्रवाई में: http://js.do/HeavyMetalCookies/quick_hack
टिप्पणियों के साथ टूट गया:
<script>
//: The message "QUICK_HACK"
//: wrapped in a header #1 tag.
var text = "<h1>QUICK_HACK</h1>";
//: It's a quick hack, so I don't
//: care where it goes on the document,
//: just as long as I can see it.
//: Since I am doing this quick hack in
//: an empty file or scratchpad,
//: it should be visible.
var child = document.children[0];
//: Set the html content of your child
//: to the message you want to see on screen.
child.innerHTML = text;
</script>
कारण मैंने पोस्ट किया:
JS.do में दो हव्वा होने चाहिए:
लेकिन कंसोल.लॉग संदेश नहीं दिखाता है। यहाँ जल्दी समाधान की तलाश में आया था। मैं सिर्फ स्क्रैडपैड कोड की कुछ लाइनों के परिणाम देखना चाहता हूं, अन्य समाधान बहुत अधिक काम कर रहे हैं।
वह क्यों स्वीकार्य नहीं है?
document.getElementById('test').innerHTML += str
यह करने का पाठ्यपुस्तक तरीका होगा।
यह हल कर सकते हैं
document.getElementById("list-input-email").insertAdjacentHTML('beforeend', '<div class=""><input type="text" name="" value="" class="" /></div>');
भीतरी HTML मौजूदा नोड्स के लिए ईवेंट जैसे सभी डेटा को साफ़ करता है
फर्स्ट चाइल्ड के साथ बच्चे को जोड़ें केवल आंतरिक HTML में पहला बच्चा जोड़ता है। उदाहरण के लिए अगर हमें संलग्न करना है:
<p>text1</p><p>text2</p>
केवल text1 दिखाई देगा
इस बारे में क्या:
बच्चे को जोड़ें द्वारा आंतरिक HTML में विशेष टैग जोड़ता है और फिर हमारे द्वारा बनाए गए टैग को हटाकर बाहरी HTML संपादित करें। यह नहीं जानते कि यह कितना स्मार्ट है, लेकिन यह मेरे लिए काम करता है या आप बाहरी HTML को आंतरिक HTML में बदल सकते हैं, इसलिए इसे फ़ंक्शन रिप्लेसमेंट का उपयोग करने की आवश्यकता नहीं है
function append(element, str)
{
var child = document.createElement('someshittyuniquetag');
child.innerHTML = str;
element.appendChild(child);
child.outerHTML = child.outerHTML.replace(/<\/?someshittyuniquetag>/, '');
// or Even child.outerHTML = child.innerHTML
}
<div id="testit">
This text is inside the div
<button onclick="append(document.getElementById('testit'), '<button>dadasasdas</button>')">To div</button>
<button onclick="append(this, 'some text')">to this</button>
</div>
सबसे छोटा - 18 वर्ण (भ्रमित न होना +=
(ओपी द्वारा उल्लेख) यहां=
अधिक विवरण के साथ )
test.innerHTML=str
innerHTML
स्ट्रिंग को तत्व में डाल दिया जाता है (सभी बच्चों को प्रतिस्थापित करते हुए), जबकिinsertAdjacentHTML
इसे (1) तत्व से पहले, (2) तत्व के बाद, (3) तत्व के अंदर पहले बच्चे, या (4) से पहले रखा जाता है। पिछले बच्चे के बाद तत्व के अंदर।