मैं अक्सर एक तत्व की सामग्री स्पष्ट करने के लिए निम्नलिखित कोड का उपयोग करें:क्या इंटरनेट एक्सप्लोरर 9/10 में आंतरिक HTML = "" के साथ कोई बग है?
div.innerHTML = "";
लेकिन मैं इंटरनेट एक्सप्लोरर पर एक Stange व्यवहार का पता चला। ऐसा लगता है कि div के सभी बच्चों को भी अपने बच्चों को हटा दिया! अगर मैं ऊपर दिए गए div के बच्चे के संदर्भ में रहता हूं, div.innerHTML = "";
करने के बाद, बच्चे का टेक्स्ट नोड अब बच्चे में नहीं है।
निम्नलिखित कोड इस व्यवहार का सबूत (http://jsfiddle.net/Laudp273/) है:
function createText() {
var e = document.createElement("div");
e.textContent = "Hello World!";
return e;
}
var mrk = document.createElement("div");
mrk.appendChild(createText());
mrk.style.border = "4px solid yellow";
var container = null;
function addDiv() {
if (container) {
container.innerHTML = "";
}
var e = document.createElement("div");
e.appendChild(mrk);
container = e;
document.body.appendChild(e);
}
var btn = document.createElement("button");
btn.textContent = "Add marker";
btn.addEventListener(
"click",
function() {
addDiv();
},
false
);
document.body.appendChild(btn);
आप दो बार "मार्कर जोड़ें" बटन पर क्लिक करें, तो आप एक खाली पीला आयत के बजाय texte साथ एक देखेंगे " हैलो वर्ड! "।
क्या यह एक बग या विनिर्देश फ़ायरफ़ॉक्स और न ही Google क्रोम द्वारा उपयोग किया जाता है?
मैं सहमत हूँ। माइक्रोसॉफ्ट की व्याख्या अस्पष्ट से अधिक है। यही कारण है कि मैं 'div.innerHTML =" "'का उपयोग नहीं करता हूं। मैं प्रत्येक बालकोड पर 'removeChild' का उपयोग करता हूं, लेकिन मुझे यकीन नहीं है कि यह तेज़ है। – Tolokoban
@ टोलोकोबन: यह वास्तव में नाटकीय रूप से है। मेरे पास प्रदर्शन परीक्षणों के साथ कहीं और चारों ओर लात मारने का उत्तर है, और (उस समय मेरे आश्चर्य के लिए) 'removeChild' '' '' '' '' '' '' '' '' '' '' '' '। * संपादित करें *: इसे मिला: http://stackoverflow.com/a/13798847/157247 –
लिंक किए गए उत्तर को पहले ही अपडेट कर दिया गया है। लेकिन यहां भी स्पष्ट करने के लिए, 'आंतरिक HTML' का उपयोग करना तेज़ है। –