2013-10-25 8 views
11

मान लीजिए कि हमारे पास निम्न तत्व <p id="abc">Hello World</p> है।
टेक्स्ट नोड या आंतरिक HTML

document.getElementById("abc").innerHTML="good morning"; 
document.getElementById("abc").firstChild.nodeValue="good morning"; 

सवाल कर रहे हैं:

  • कौन सा 2 समाधान के बीच अंतर कर रहे हैं मैं <p> टैग में सामग्री को संशोधित करना चाहते हैं मैं जावास्क्रिप्ट कोड में दो तरीके हैं?
  • मुझे किस का उपयोग करना चाहिए? क्या दूसरे की तुलना में कोई बेहतर है?
+1

सुझाए गए पढ़ने: 1) http://stackoverflow.com/a/1359822/1273830 2) http://kellegous.com/j/ 2013/02/27/innerText-बनाम-textContent / – Prasanth

उत्तर

21

पहला व्यक्ति आपके लक्षित तत्व के अंदर होने वाले किसी भी HTML तत्व को मिटा देगा। दूसरा केवल तभी काम करेगा जब पहला बच्चा टेक्स्ट नोड (एक सामान्य गलती है जिसे इसे खाली तत्व पर प्रयोग करने और उपयोग करने के लिए किया जाता है)।

दूसरा "अधिक सही" है (innerHTML वास्तव में एक हैक्सी शॉर्टकट है) लेकिन पहला निश्चित रूप से अधिक विश्वसनीय है। उस ने कहा, यह एक्सएसएस इंजेक्शन के लिए कमजोर है।

पूरी तरह से सही होने के लिए, यदि आप ऐसा करते हैं:

var abc = document.getElementById('abc'); 
while(abc.firstChild) abc.removeChild(abc.firstChild); 
abc.appendChild(document.createTextNode("good morning")); 
संबंधित मुद्दे