JavaScript DOM: innerText, textContent ve innerHTML Kavramları
eminbasbayan

İçindekiler
Bu yazıda neler var?
Web sayfaları sadece statik yazılar ve görsellerden oluşmaz. Günümüzde modern web siteleri oldukça etkileşimlidir ve bu etkileşimi sağlayan temel dillerden biri JavaScript’tir. JavaScript sayesinde bir kullanıcı sayfayı görüntülerken, o anda sayfadaki içerikler değiştirilebilir. Bu yazıda, bir web sayfasındaki içerikleri nasıl değiştirebileceğimizi ve özellikle üç önemli özelliği — innerText, textContent ve innerHTML — nasıl kullanabileceğimizi detaylı bir şekilde inceleyeceğiz.
DOM Nedir ve Neden Önemlidir?
Her HTML belgesi, tarayıcı tarafından yüklendiğinde DOM (Document Object Model) adı verilen özel bir yapı haline gelir. Bu yapı sayesinde JavaScript, sayfadaki öğelere ulaşabilir ve onları değiştirebilir. Bu süreçte “DOM manipülasyonu” adı verilen işlemler yapılır. Örneğin, bir paragrafın içindeki yazıyı değiştirmek, başlığa yeni bir kelime eklemek ya da bir bağlantıyı başka bir yazıyla güncellemek gibi.
DOM manipülasyonunda en sık karşılaşılan işlemlerden biri, HTML etiketlerinin içindeki yazı içeriklerini almak ya da onları değiştirmektir. Bu işlem için JavaScript dilinde üç temel özellik kullanılır: innerText, textContent ve innerHTML.
innerText: Kullanıcıya Görünen Yazıyı Yönetmek
innerText özelliği, bir HTML öğesinin yalnızca görünen metin içeriğini alır veya değiştirir. Yani CSS ile display: none yapılmış veya sayfada görünmeyen herhangi bir içerik, innerText ile alınmaz.
Örnek:
<p id="bilgi">Bu yazı görünür.</p>const paragraf = document.getElementById("bilgi");
console.log(paragraf.innerText); // Çıktı: Bu yazı görünür.
paragraf.innerText = "Yeni içerik yüklendi.";Bu örnekte, innerText kullanılarak sayfadaki <p> etiketinin içindeki yazı "Yeni içerik yüklendi." olarak değiştirildi. Eğer bu paragrafın içinde bazı kısımlar gizlenmiş olsaydı, onlar göz ardı edilirdi.
textContent: Tüm Yazı İçeriğini Almak (Gizli Olsa Bile)
textContent, görünür olup olmadığına bakmadan HTML öğesinin tüm metin içeriğini alır. Bu yönüyle innerText'ten farklıdır. Ayrıca, performans açısından textContent daha hızlı çalışır ve boşluk karakterleri ile satır boşluklarını da içerebilir.
Örnek:
<div id="uyari">
Bu yazı görünür.
<span style="display: none;">Bu yazı gizlidir.</span>
</div>const kutu = document.getElementById("uyari");
console.log(kutu.textContent);
// Çıktı: Bu yazı görünür. Bu yazı gizlidir.Gördüğünüz gibi, textContent ile hem görünür hem de gizli içerikler elde edilebiliyor.
innerHTML: HTML Etiketlerini Yönetmek
innerHTML özelliği, bir HTML öğesinin içindeki etiketlerle birlikte tüm içeriği verir ve bu içeriği değiştirme olanağı tanır. En önemli farkı, HTML etiketlerini tanıması ve onların da manipüle edilebilmesidir.
Örnek:
<h2 id="baslik">Merhaba</h2>const baslik = document.getElementById("baslik");
baslik.innerHTML = "<u>Yeni Başlık</u>";Bu kod çalıştırıldığında, <h2> etiketi içindeki yazı “Yeni Başlık” olarak değişir ve altı çizili olur. Çünkü <u> etiketi HTML’de alt çizgi için kullanılır. Bu işlemi innerText ile yapsaydık, yazı şöyle görünürdü: <u>Yeni Başlık</u> — yani HTML etiketi yazı olarak görünürdü, etki etmezdi.
HTML İçeriğine Yeni Öğeler Eklemek
innerHTML ayrıca var olan içeriğin üzerine yeni içerik eklemek için de kullanılabilir. Bunun için += operatörü ile mevcut içeriğe yeni bir HTML elemanı eklenebilir.
Örnek:
const duyuru = document.querySelector("#duyuru");
duyuru.innerHTML += "<p><strong>Yeni içerik eklendi.</strong></p>";Bu kod, sayfadaki #duyuru ID’sine sahip öğeye yeni bir paragraf ekler. Bu paragraf kalın yazı içerir. innerText ya da textContent ile böyle bir şey yapmak mümkün değildir çünkü onlar HTML etiketlerini sadece yazı gibi görür.
Aralarındaki Farkların Tablosu
| Özellik | Ne Yapar? | Gizli İçeriği Alır mı? | HTML Etiketlerini Tanır mı? |
|---|---|---|---|
innerText | Yalnızca görünen yazıyı alır veya değiştirir | Hayır | Hayır |
textContent | Tüm yazıyı (gizli olanlar dahil) alır | Evet | Hayır |
innerHTML | Hem yazıyı hem HTML etiketlerini alır veya yazar | Evet | Evet |
Sonuç
DOM manipülasyonu, JavaScript öğrenen herkesin karşılaşacağı önemli bir konudur. innerText, textContent ve innerHTML gibi özellikler, web sayfalarındaki içerikleri değiştirmek için temel araçlardır. Bu özellikleri ezberlemek zorunda değilsiniz; önemli olan hangi durumda hangisinin işe yaradığını anlamaktır. Gerekirse MDN (Mozilla Developer Network) gibi kaynaklardan yardım alarak kullanımı öğrenebilirsiniz.
Basitçe söylemek gerekirse:
- Görünen metni değiştirmek için:
innerText - Tüm metni almak için (gizli olanlar dahil):
textContent - HTML içerikleriyle oynamak için:
innerHTML
Bu üç özellik, web geliştirme sürecinde dinamik sayfalar oluşturmak için vazgeçilmez araçlardır. Özellikle etkileşimli projeler geliştirmek isteyen herkesin bu farkları iyi kavraması gerekir.






