मैं AJAX का उपयोग डेटा को div तत्व में जोड़ने के लिए कर रहा हूं, जहां मैं जावास्क्रिप्ट से div को भरता हूं, मैं div में पाए गए पिछले डेटा को खोए बिना div को नए डेटा को कैसे जोड़ सकता हूं?
मैं AJAX का उपयोग डेटा को div तत्व में जोड़ने के लिए कर रहा हूं, जहां मैं जावास्क्रिप्ट से div को भरता हूं, मैं div में पाए गए पिछले डेटा को खोए बिना div को नए डेटा को कैसे जोड़ सकता हूं?
जवाबों:
इसे इस्तेमाल करे:
var div = document.getElementById('divID');
div.innerHTML += 'Extra stuff';
div
में यह भी काम नहीं करता है कि उपयोगकर्ता श्रवण पाठ के साथ घटना श्रोताओं या इनपुट वाले तत्व शामिल हैं। मैं चंदू द्वारा जवाब देने की सलाह देता हूं ।
परिशिष्ट का उपयोग करना:
var theDiv = document.getElementById("<ID_OF_THE_DIV>");
var content = document.createTextNode("<YOUR_CONTENT>");
theDiv.appendChild(content);
इनर HTML का उपयोग करना: यह दृष्टिकोण सभी श्रोताओं को मौजूदा तत्वों को हटा देगा जैसा कि @BiAiB द्वारा बताया गया है। इसलिए यदि आप इस संस्करण का उपयोग करने की योजना बना रहे हैं तो सावधानी बरतें।
var theDiv = document.getElementById("<ID_OF_THE_DIV>");
theDiv.innerHTML += "<YOUR_CONTENT>";
createTextNode
यदि आप HTML लोड कर रहे हैं तो यह बेहतर है, लेकिन काम नहीं करेगा। यदि आप उदाहरण के लिए सूची आइटम जोड़ना चाहते हैं, तो यह काम नहीं करेगा। यह बहुत सीमित है।
इससे सावधान रहें innerHTML
, जब आप इसका उपयोग करते हैं तो आप कुछ खो देते हैं:
theDiv.innerHTML += 'content',
के बराबर है:
theDiv.innerHTML = theDiv.innerHTML + 'content'
जो आपके अंदर के सभी नोड्स को नष्ट कर देगा div
और नए को फिर से बनाएगा । इसके अंदर के तत्वों के सभी संदर्भ और श्रोता खो जाएंगे ।
यदि आपको उन्हें रखने की आवश्यकता है (जब आपने एक क्लिक हैंडलर संलग्न किया है, उदाहरण के लिए), तो आपको DOM फ़ंक्शंस के साथ नई सामग्री को जोड़ना होगा (appendChild, insertAfter, insertBefore):
var newNode = document.createElement('div');
newNode.innerHTML = data;
theDiv.appendChild( newNode )
appendChild
किया गया था @Cybernate
document.createTextNode()
।
यदि आप इसे तेज़ी से करना चाहते हैं और संदर्भ और श्रोताओं को खोना नहीं चाहते हैं: .insertAdjacentHTML () ;
"यह उस तत्व का पुनर्परिवर्तन नहीं करता है जिस पर इसका उपयोग किया जा रहा है और इस प्रकार यह तत्व के अंदर मौजूद तत्वों को दूषित नहीं करता है । यह, और क्रमांकन के अतिरिक्त चरण से बचने से यह बहुत तेज हो जाता है। प्रत्यक्ष इनर HTML हेरफेर की तुलना में हो जाता है।"
सभी मेनलाइन ब्राउज़रों (IE6 +, FF8 +, All others and Mobile) पर समर्थित: http://caniuse.com/#feat=insertadjacenthtml
उदाहरण के लिए https://developer.mozilla.org/en-US/docs/Web/API/Element/insert.jac.html
// <div id="one">one</div>
var d1 = document.getElementById('one');
d1.insertAdjacentHTML('afterend', '<div id="two">two</div>');
// At this point, the new structure is:
// <div id="one">one</div><div id="two">two</div>
insertAdjacentElement()
और भी है insertAdjacentText()
।
यदि आप jQuery का उपयोग कर रहे हैं तो आप इसका उपयोग कर सकते हैं $('#mydiv').append('html content')
और यह मौजूदा सामग्री को रखेगा।
IE9 + (Vista +) समाधान, नए पाठ नोड्स बनाए बिना:
var div = document.getElementById("divID");
div.textContent += data + " ";
हालाँकि, यह मेरे लिए काफी मुश्किल नहीं था क्योंकि मुझे प्रत्येक संदेश के बाद एक नई लाइन की आवश्यकता थी, इसलिए मेरा DIV इस कोड के साथ स्टाइल उल में बदल गया:
var li = document.createElement("li");
var text = document.createTextNode(data);
li.appendChild(text);
ul.appendChild(li);
से https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent :
आंतरिक HTML से अंतर
जैसा कि इसके नाम से संकेत मिलता है, आंतरिक HTML HTML लौटाता है। अक्सर एक तत्व के भीतर पाठ को पुनः प्राप्त या लिखने के लिए, लोग इनर HTML का उपयोग करते हैं। इसके बजाय textContent का उपयोग किया जाना चाहिए। क्योंकि टेक्स्ट को HTML के रूप में पार्स नहीं किया गया है, इसलिए इसके बेहतर प्रदर्शन की संभावना है। इसके अलावा, यह एक XSS हमले वेक्टर से बचा जाता है।
आप jQuery का उपयोग कर सकते हैं। जो इसे बहुत सरल बनाते हैं।
बस अपने HTML में jQuery फ़ाइल जोड़ें jQuery डाउनलोड करें
या आप ऑनलाइन लिंक उपयोगकर्ता कर सकते हैं:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
और यह प्रयास करें:
$("#divID").append(data);
निम्नलिखित विधि दूसरों की तुलना में कम सामान्य है, हालांकि यह बहुत अच्छा है जब आप सुनिश्चित हैं कि आपके पिछले बच्चे का नोड पहले से ही एक पाठ नोड है। इस तरह आप MDN संदर्भ परिशिष्ट का उपयोग करके एक नया पाठ नोड नहीं बनाएंगेappendData
let mydiv = document.getElementById("divId");
let lastChild = mydiv.lastChild;
if(lastChild && lastChild.nodeType === Node.TEXT_NODE ) //test if there is at least a node and the last is a text node
lastChild.appendData("YOUR TEXT CONTENT");
सिर्फ सेटट्रेक्टर का उपयोग क्यों न करें?
thisDiv.setAttribute('attrName','data you wish to append');
तब आप इस डेटा को प्राप्त कर सकते हैं:
thisDiv.attrName;
जावा स्क्रिप्ट
document.getElementById("divID").html("this text will be added to div");
jQuery
$("#divID").html("this text will be added to div");
.html()
बिना किसी तर्क के उपयोग करें यह देखने के लिए कि आपने प्रवेश किया है। आप अपने कोड में उपयोग करने से पहले इन कार्यों का परीक्षण करने के लिए ब्राउज़र कंसोल का उपयोग कर सकते हैं।