2013-10-25 15 views
11

Aşağıdaki öğenin <p id="abc">Hello World</p> olduğunu varsayalım.
TextNode veya innerHTML

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

soru vardır:

  • Hangi 2 çözümleri arasındaki fark I <p> etiketinde içeriği değiştirmek isterseniz ben javascript kodunda iki yolu var?
  • Hangisini kullanmalıyım? Biri diğerinden daha iyi mi?
+1

Önerilen okuma: 1) http://stackoverflow.com/a/1359822/1273830 2) http://kellegous.com/j/ 2013/02/27/innerText-vs-textContent / – Prasanth

cevap

21

İlki, hedef öğenizde bulunabilecek HTML öğelerini silecektir. İkincisi, sadece ilk çocuk bir metin düğümüdür (ortak bir hata, boş bir öğede denemek ve kullanmaktır).

İkincisi "daha doğru" (innerHTML gerçekten bir haxy kısayoludır) ancak ilk kesinlikle daha güvenilirdir. Bu, XSS enjeksiyonlarına karşı savunmasızdır.

tamamen doğru olduğu için, bu yapardın:

var abc = document.getElementById('abc'); 
while(abc.firstChild) abc.removeChild(abc.firstChild); 
abc.appendChild(document.createTextNode("good morning")); 
İlgili konular