Tüm blog yazıları

JavaScript DOM Nedir ve Neden Önemlidir?

HTML ve CSS kullanarak bir web sayfası oluşturduğumuzda, sayfanın iskeleti ve görsel tasarımı ortaya çıkar. HTML ile başlıklar, paragraflar, görseller gibi içerikler eklenir; CSS ile bu içerikler renklendirilir, hizalanır ve biçimlendirilir. Ancak bu noktada sayfamız hâlâ stat

eminbasbayan3 dk okuma
JavaScript DOM Nedir ve Neden Önemlidir?

Şimdiye kadar JavaScript'i tek başına öğrendik - değişkenler, fonksiyonlar, array'ler, object'ler... Ama hep konsolda çalıştık. Peki JavaScript ile gerçek bir web sayfasını nasıl kontrol edebiliriz?

İşte DOM (Document Object Model) tam da bu! DOM, JavaScript ile HTML ve CSS arasındaki köprüdür. Bu sayede:

  • Sayfadaki içerikleri değiştirebilirsiniz
  • Stilleri dinamik olarak uygulayabilirsiniz
  • Kullanıcı tıklamalarına tepki verebilirsiniz
  • Yeni elementler ekleyip silebilirsiniz

DOM Nedir?

DOM (Document Object Model), tarayıcının HTML sayfasını JavaScript nesnelerine dönüştürdüğü bir modeldir.

Basit Tanım

metin
HTML Dosyası  →  Tarayıcı  →  JavaScript Nesneleri (DOM)
                    ↓
              Görsel Sayfa

Tarayıcı bir HTML dosyasını yüklediğinde:

  1. HTML kodunu okur
  2. Her HTML elementi için bir JavaScript nesnesi oluşturur
  3. Bu nesneleri birbirine bağlı bir ağaç yapısı şeklinde düzenler
  4. Bu yapıya DOM denir

DOM Ağaç Yapısı

Şu basit HTML'i düşünelim:

html
<!DOCTYPE html>
<html>
<head>
    <title>Merhaba</title>
</head>
<body>
    <h1>Başlık</h1>
    <p>Paragraf metni</p>
    <ul>
        <li>Madde 1</li>
        <li>Madde 2</li>
    </ul>
</body>
</html>

Tarayıcı bunu şöyle bir ağaç yapısına dönüştürür:

metin
                    document
                       │
                      html
                    /      \
                head        body
                  │        /  |  \
               title     h1   p   ul
                  │       │   │   / \
             "Merhaba" "Başlık" "Paragraf" li  li
                                          │    │
                                     "Madde 1" "Madde 2"

Aile İlişkileri

DOM'da elementler arasında aile ilişkisi vardır:

TerimAçıklamaÖrnek
Parent (Ebeveyn)Üst elementbody, ul'nin parent'ı
Child (Çocuk)Alt elementli'ler, ul'nin child'ları
Sibling (Kardeş)Aynı seviyedeki elementlerh1, p, ul kardeştir

document Nesnesi

DOM'un en tepesinde document nesnesi bulunur. Bu nesne:

  • Tüm sayfanın "giriş kapısı"dır
  • Sayfadaki tüm elementlere buradan ulaşılır
  • Tarayıcı tarafından otomatik oluşturulur

Konsolda document

Tarayıcı konsolunu açıp document yazın:

javascript
document
// Tüm HTML sayfasını gösterir

Daha detaylı görmek için:

javascript
console.dir(document);
// document nesnesinin tüm özelliklerini gösterir

document'in Bazı Özellikleri

javascript
// Sayfa başlığı
console.log(document.title);  // "Merhaba"

// Sayfa URL'i
console.log(document.URL);    // "https://..."

// Body elementi
console.log(document.body);   // <body>...</body>

// Head elementi
console.log(document.head);   // <head>...</head>

// Sayfadaki tüm linkler
console.log(document.links);  // HTMLCollection [...]

// Sayfadaki tüm resimler
console.log(document.images); // HTMLCollection [...]

// Sayfadaki tüm formlar
console.log(document.forms);  // HTMLCollection [...]

DOM ile Neler Yapılabilir?

1. İçerik Değiştirme

javascript
// Başlığın metnini değiştir
document.querySelector("h1").innerText = "Yeni Başlık!";

2. Stil Değiştirme

javascript
// Arka plan rengini değiştir
document.body.style.backgroundColor = "lightblue";

3. Element Ekleme

javascript
// Yeni bir paragraf oluştur ve ekle
const yeniParagraf = document.createElement("p");
yeniParagraf.innerText = "Bu yeni eklendi!";
document.body.appendChild(yeniParagraf);

4. Element Silme

javascript
// Bir elementi sil
const silinecek = document.querySelector(".silinecek");
silinecek.remove();

5. Olaylara Tepki Verme

javascript
// Butona tıklanınca bir şey yap
const buton = document.querySelector("button");
buton.addEventListener("click", function() {
    alert("Butona tıklandı!");
});

Gerçek Dünya Örnekleri

Örnek 1: Dropdown Menü

Bir web sitesindeki açılır menü düşünün:

  1. Kullanıcı "Menü" butonuna tıklar
  2. JavaScript bu tıklamayı algılar
  3. Gizli olan menü listesini görünür yapar
  4. Tekrar tıklayınca gizler
javascript
// Pseudo kod
buton.addEventListener("click", function() {
    menu.classList.toggle("gorunur");
});

Örnek 2: Form Doğrulama

Bir kayıt formu düşünün:

  1. Kullanıcı email girer
  2. JavaScript email formatını kontrol eder
  3. Hatalıysa kırmızı uyarı gösterir
  4. Doğruysa yeşil onay gösterir

Örnek 3: Canlı Arama

Bir arama kutusu düşünün:

  1. Kullanıcı her harf yazdığında
  2. JavaScript yazdığını algılar
  3. Sonuçları anında filtreler ve gösterir

DOM'un Önemi

JavaScript Öncesi (Statik)

metin
HTML + CSS = Sabit Sayfa

Kullanıcı sadece izleyebilir
Etkileşim yok

JavaScript + DOM (Dinamik)

metin
HTML + CSS + JavaScript = İnteraktif Uygulama

Kullanıcı etkileşebilir
Sayfa tepki verir
Canlı güncelleme

Tarayıcı Geliştirici Araçları

DOM ile çalışırken Developer Tools (F12) çok önemlidir:

Elements Sekmesi

  • Sayfadaki tüm HTML elementlerini gösterir
  • Elementlerin stillerini inceler
  • Canlı değişiklik yapabilirsiniz

Console Sekmesi

  • JavaScript kodlarını test eder
  • document nesnesini inceleyebilirsiniz
  • Hataları görürsünüz

Pratik: Konsolu Açın

  1. Herhangi bir web sayfasında F12'ye basın
  2. Console sekmesine gidin
  3. Şunları deneyin:
javascript
// Sayfa başlığını değiştir
document.title = "Merhaba Dünya!";

// Body rengini değiştir
document.body.style.backgroundColor = "yellow";

// Tüm resimleri gizle
document.querySelectorAll("img").forEach(img => img.style.display = "none");

// Tüm linklerin rengini değiştir
document.querySelectorAll("a").forEach(a => a.style.color = "red");

DOM Manipülasyonu Adımları

Genel olarak DOM ile çalışırken şu adımları izleriz:

metin
1. SEÇ      →  Hangi elementi değiştireceğiz?
2. DEĞİŞTİR →  Ne yapacağız? (içerik, stil, class, vs.)
3. TEKRARLA →  Gerekirse başka elementler için tekrarla

Seçme Yöntemleri (Önümüzdeki Konular)

MetotAçıklama
getElementById()ID ile tek element seç
getElementsByClassName()Class ile elementleri seç
getElementsByTagName()Tag adı ile elementleri seç
querySelector()CSS seçici ile tek element seç
querySelectorAll()CSS seçici ile tüm elementleri seç

Değiştirme Yöntemleri (Önümüzdeki Konular)

Özellik/MetotAçıklama
innerTextMetin içeriği
innerHTMLHTML içeriği
styleCSS stilleri
classListCSS class'ları
setAttribute()HTML özellikleri

Özet

KavramAçıklama
DOMDocument Object Model - HTML'in JavaScript nesnelerine dönüştürülmüş hali
documentDOM'un en üst nesnesi, tüm sayfanın giriş kapısı
ElementHer HTML etiketi için oluşturulan JavaScript nesnesi
Ağaç YapısıParent-child ilişkileriyle oluşan hiyerarşi
ManipülasyonJavaScript ile DOM'u değiştirme işlemi

Sırada Ne Var?

DOM'un ne olduğunu ve nasıl çalıştığını öğrendik. Artık pratik kısma geçebiliriz!

Bir sonraki makalede getElementById metodunu öğreneceğiz - sayfadaki elementleri ID ile seçmenin en basit yolu.

JavaScript Classes ile pratik uygulamalar, metotlar arası iletişim ve gerçek dünya kod örnekleri
JavaScript Dersleri9 dk okuma

JavaScript Classes - Pratik Uygulamalar

JavaScript class'ları ile pratik uygulamalara geçin! Metotlar arası iletişimden constructor'da metot çağırmaya, kod tekrarını azaltmaktan gerçek dünya senaryolarına kadar class kullanımının inceliklerini keşfedin. Kendi alışveriş sepeti örneğinizle bilginizi pekiştirin.

Yazıyı oku
JavaScript class yapısını gösteren bir kod örneği, ES6 ile modern nesne oluşturma
JavaScript Dersleri9 dk okuma

JavaScript Classes

ES6 ile JavaScript'e gelen class yapısı sayesinde nesne oluşturmak artık çok daha kolay ve düzenli! Constructor function karmaşasından kurtulup, okunabilir ve yönetilebilir kodlar yazmak isteyenler için modern JavaScript'in temel taşı olan class'ları tüm detaylarıyla keşfedin. Bu rehberle nesne şabl

Yazıyı oku
JavaScript kodunda Constructor Function ve new keyword'ü ile nesne oluşturma örnekleri
JavaScript Dersleri8 dk okuma

Constructor Functions ve new Keyword

Factory Function'ların hafıza israfı sorununa Constructor Function'lar ve new keyword'ü ile son verin! Metotları paylaştırarak JavaScript objelerini daha verimli nasıl oluşturacağınızı, new'in perde arkasında neler yaptığını ve prototype sisteminin gücünü bu rehberde keşfedin.

Yazıyı oku

Çerez tercihlerin

Platformun çalışması için zorunlu çerezler kullanıyoruz. İzin verirsen anonim kullanım verilerini ölçüyoruz. Ayrıntıları incele