Bu ders için video bulunmamaktadır.
Ders İçeriği
Giriş
Önceki DOM derslerinde, mevcut HTML elemanlarını nasıl seçeceğimizi ve içeriklerini, niteliklerini ve stillerini nasıl değiştireceğimizi öğrendik. Ancak JavaScript'in DOM üzerindeki gücü bunlarla sınırlı değildir. JavaScript kullanarak, web sayfasına tamamen yeni HTML elemanları ekleyebilir, mevcut elemanları kopyalayabilir veya gereksiz elemanları sayfadan kaldırabiliriz.
Bu yetenek, dinamik kullanıcı arayüzleri oluşturmak için kritik öneme sahiptir. Örneğin, kullanıcı bir butona tıkladığında listeye yeni bir öğe eklemek, bir form gönderildiğinde başarı mesajı göstermek veya belirli bir koşul sağlandığında bazı elemanları gizlemek yerine tamamen kaldırmak gibi işlemler, eleman ekleme ve silme yöntemleriyle gerçekleştirilir.
Bu derste, JavaScript ile yeni DOM düğümleri (elemanlar, metinler) oluşturma, bu düğümleri DOM ağacının istediğimiz yerine ekleme ve mevcut düğümleri DOM'dan kaldırma yöntemlerini detaylı bir şekilde inceleyeceğiz.
Yeni Eleman Oluşturma: createElement()
DOM'a yeni bir HTML elemanı eklemenin ilk adımı, o elemanı JavaScript içinde oluşturmaktır. Bunun için document.createElement(etiketAdi)
metodu kullanılır. Bu metod, belirtilen etiket adına sahip yeni bir element düğümü oluşturur ancak henüz DOM ağacına eklemez.
Not: createElement()
sadece element düğümü oluşturur. Metin içeriği eklemek için textContent
veya innerText
kullanılır ya da ayrı bir metin düğümü (text node) oluşturulur.
Metin Düğümü Oluşturma: createTextNode()
Bir elemanın içine sadece metin eklemek istediğimizde veya metni ayrı bir düğüm olarak yönetmek istediğimizde document.createTextNode(metin)
metodunu kullanırız.
Oluşturulan Elemanları DOM'a Ekleme
createElement()
ile oluşturulan bir eleman, DOM ağacına eklenene kadar sayfada görünmez. Elemanları DOM'a eklemek için çeşitli metodlar vardır:
parentNode.appendChild(newNode)
En yaygın kullanılan ekleme metodudur. newNode
'u (oluşturulan eleman veya metin düğümü), parentNode
'un (elemanın ekleneceği ebeveyn eleman) alt elemanlarının sonuna ekler.
parentNode.insertBefore(newNode, referenceNode)
newNode
'u, parentNode
'un alt elemanlarından olan referenceNode
'un hemen önüne ekler. Eğer referenceNode
null
ise, appendChild
gibi sona ekler.
Modern Ekleme Metodları: prepend()
, append()
, before()
, after()
Daha modern ve esnek ekleme yöntemleridir. Birden fazla düğüm veya metin eklemeye izin verirler.
element.prepend(node1, node2, ..., "metin")
: Belirtilen düğümleri veya metinlerielement
'in içeriğinin başına ekler.element.append(node1, node2, ..., "metin")
: Belirtilen düğümleri veya metinlerielement
'in içeriğinin sonuna ekler (appendChild
'a benzer ama daha esnektir).element.before(node1, node2, ..., "metin")
: Belirtilen düğümleri veya metinlerielement
'in hemen önüne (aynı seviyeye) ekler.element.after(node1, node2, ..., "metin")
: Belirtilen düğümleri veya metinlerielement
'in hemen sonrasına (aynı seviyeye) ekler.
İpucu: append
, prepend
, before
, after
metodları genellikle appendChild
ve insertBefore
'a göre daha okunabilir ve esnektir, özellikle birden fazla öğe veya metin eklerken.
Elemanları Kaldırma: remove()
ve removeChild()
DOM ağacından elemanları kaldırmak için iki ana yöntem vardır:
element.remove()
Modern ve basit bir yöntemdir. Seçilen element
'i doğrudan DOM ağacından kaldırır.
parentNode.removeChild(childNode)
Daha eski bir yöntemdir. parentNode
'un alt elemanlarından olan childNode
'u kaldırır. Bu metodu kullanmak için hem kaldırılacak elemanı hem de onun ebeveynini bilmeniz gerekir.
İpucu: element.remove()
genellikle daha basit ve okunabilir olduğu için tercih edilir.
Elemanları Değiştirme: replaceWith()
Bir DOM elemanını başka bir elemanla veya metinle değiştirmek için element.replaceWith(newNodeOrString)
metodu kullanılır.
Alıştırmalar
- Bir butona her tıklandığında, sayfadaki bir
<ul>
listesine "Yeni Öğe X" (X artan bir sayı olacak şekilde) metniyle yeni bir<li>
elemanı ekleyin. - Listeye eklenen her öğeye tıklandığında, o öğenin kendisini listeden kaldırmasını sağlayın (
remove()
kullanın). - Sayfada bir resim (
<img>
) ve bir "Değiştir" butonu olsun. Butona tıklandığında, resmi "Resim yüklendi." metnini içeren bir paragraf (<p>
) ile değiştirin (replaceWith()
kullanın). - Bir div elemanı oluşturun, içine bir başlık (
<h2>
) ve bir paragraf (<p>
) ekleyin ve bu div'i sayfanınbody
elemanının başına ekleyin (prepend()
kullanın). - Sayfadaki tüm paragrafları (
<p>
) seçin ve her birinin önüne "Önemli: " metnini içeren bir<strong>
elemanı ekleyin (before()
kullanın).
Bu derste, JavaScript ile DOM ağacını dinamik olarak nasıl değiştirebileceğimizi öğrendik:
- Eleman Oluşturma:
document.createElement(etiketAdi)
: Yeni bir HTML elemanı oluşturur.document.createTextNode(metin)
: Yeni bir metin düğümü oluşturur.
- Eleman Ekleme:
parentNode.appendChild(newNode)
: Elemanın sonuna ekler.parentNode.insertBefore(newNode, referenceNode)
: Belirtilen elemanın önüne ekler.element.append(...nodesOrDOMStrings)
: Elemanın içeriğinin sonuna ekler (daha modern).element.prepend(...nodesOrDOMStrings)
: Elemanın içeriğinin başına ekler (daha modern).element.before(...nodesOrDOMStrings)
: Elemanın önüne (aynı seviyeye) ekler (daha modern).element.after(...nodesOrDOMStrings)
: Elemanın sonrasına (aynı seviyeye) ekler (daha modern).
- Eleman Kaldırma:
element.remove()
: Elemanı doğrudan kaldırır (daha modern).parentNode.removeChild(childNode)
: Ebeveyni üzerinden çocuğu kaldırır.
- Eleman Değiştirme:
element.replaceWith(...nodesOrDOMStrings)
: Elemanı başka düğümlerle veya metinlerle değiştirir.
DOM elemanlarını ekleme, silme ve değiştirme yeteneği, kullanıcı etkileşimlerine yanıt veren, dinamik ve modern web uygulamaları oluşturmanın temelini oluşturur.
Bir sonraki derste, kullanıcı etkileşimlerini yakalamamızı ve bunlara tepki vermemizi sağlayan DOM olaylarını (events) inceleyeceğiz.