Çerezler
Bu web sitesi sizlere daha iyi hizmet verebilmek için çerezleri kullanır.
                Web sayfaları, tarayıcılar tarafından yüklenirken bir Belge Nesne Modeli (DOM) olarak yapılandırılır. Bu model, HTML belgesinin mantıksal yapısını temsil eder ve JavaScript'in web sayfasının içeriğine, yapısına ve stiline dinamik olarak erişmesini ve bunları değiştirmesini sağlayan bir API (Uygulama Programlama Arayüzü) sunar. Bu makale, JavaScript kullanarak HTML DOM ile nasıl etkileşim kuracağınızı, elementleri nasıl seçeceğinizi, içeriklerini ve stillerini nasıl değiştireceğinizi ve olayları nasıl yöneteceğinizi adım adım açıklayacaktır.
JavaScript'in DOM ile etkileşim kurmasının temelinde, belgedeki HTML elementlerini seçmek ve ardından bu elementlerin özelliklerine veya metotlarına erişmek yatar. Aşağıdaki sözdizimleri, en yaygın DOM seçim ve manipülasyon yöntemlerini özetlemektedir:
// Element seçimi
document.getElementById("elementId");
document.getElementsByClassName("className");
document.getElementsByTagName("tagName");
document.querySelector("cssSelector");
document.querySelectorAll("cssSelector");
// Element özellikleri ve metotları
element.innerHTML;
element.textContent;
element.style.propertyName;
element.setAttribute("attributeName", "value");
element.classList.add("className");
element.addEventListener("eventName", functionHandler);
document.createElement("tagName");
parentElement.appendChild(childElement);
parentElement.removeChild(childElement);document Nesnesi: DOM'a erişimin ana giriş noktasıdır. Tüm HTML belgesini temsil eder.
Element Seçim Metotları:
document.getElementById("elementId"): Belirtilen id niteliğine sahip tek bir elementi döndürür. id'ler bir sayfada benzersiz olmalıdır.
document.getElementsByClassName("className"): Belirtilen sınıf adına sahip tüm elementleri içeren bir HTMLCollection döndürür. Canlı bir koleksiyondur, yani DOM'daki değişiklikler koleksiyonu otomatik olarak günceller.
document.getElementsByTagName("tagName"): Belirtilen etiket adına sahip tüm elementleri içeren bir HTMLCollection döndürür.
document.querySelector("cssSelector"): Belirtilen CSS seçici ile eşleşen belgedeki ilk elementi döndürür.
document.querySelectorAll("cssSelector"): Belirtilen CSS seçici ile eşleşen tüm elementleri içeren bir NodeList döndürür. Statik bir koleksiyondur.
Element Özellikleri ve Metotları:
element.innerHTML: Bir elementin HTML içeriğini (alt elementler dahil) alır veya ayarlar. HTML etiketlerini yorumlar.
element.textContent: Bir elementin ve tüm alt elementlerinin metin içeriğini alır veya ayarlar. HTML etiketlerini metin olarak ele alır.
element.style.propertyName: Bir elementin CSS stil özelliklerine erişim sağlar. Örneğin, element.style.backgroundColor = "red";.
element.setAttribute("attributeName", "value"): Bir elementin belirtilen niteliğini ayarlar veya günceller. Örneğin, element.setAttribute("href", "https://example.com");.
element.classList: Bir elementin CSS sınıflarını yönetmek için bir dizi metot (add, remove, toggle, contains) sunar.
element.addEventListener("eventName", functionHandler): Bir elemente olay dinleyicisi ekler. Örneğin, bir butona tıklama olayını dinlemek için "click" kullanılır.
document.createElement("tagName"): Belirtilen etiket adıyla yeni bir HTML elementi oluşturur.
parentElement.appendChild(childElement): Belirtilen bir çocuğu, belirtilen ana elementin son çocuğu olarak ekler.
parentElement.removeChild(childElement): Belirtilen ana elementten belirtilen çocuğu kaldırır.
Aşağıdaki örnekler, JavaScript'in DOM ile nasıl etkileşim kurduğunu göstermektedir.
Örnek 1: Bir HTML Elementinin İçeriğini Güncelleme
Bu örnekte, bir paragraf elementinin metin içeriği JavaScript ile değiştirilmektedir.
Merhaba Dünya!
Örnek 2: Bir Elementin Stilini Değiştirme
Bu örnek, bir  Örnek 3: Yeni Bir Element Oluşturma ve Ekleme Bu örnek, dinamik olarak yeni bir liste öğesi oluşturup mevcut bir listeye ekler. Örnek 4: Bir Olay Dinleyicisi Ekleme Bu örnek, bir butona tıklanma olayını dinler ve tıklandığında bir paragrafın içeriğini günceller. Henüz tıklanmadı. Betik Yerleşimi ve Yükleme: JavaScript kodunuzun HTML DOM elementlerine erişmeye çalışmadan önce, bu elementlerin tarayıcı tarafından yüklenmiş ve DOM'a eklenmiş olması gerekir. Bu genellikle  Performans İpuçları: Kapsamlı DOM manipülasyonları performans maliyetli olabilir. Büyük değişiklikler yaparken, elementleri DOM'dan kaldırın, değişiklikleri yapın ve sonra tekrar ekleyin. Ayrıca, birden fazla stil değişikliği için  Güvenlik (XSS): Kullanıcı girdilerini 
    
Önemli Notlar
    
                     etiketini  etiketinin kapanışından hemen önce yerleştirerek veya defer/async niteliklerini kullanarak sağlanır. Alternatif olarak, document.addEventListener("DOMContentLoaded", function() { /* kodunuz */ }); kullanarak kodunuzun DOM tamamen yüklendikten sonra çalışmasını sağlayabilirsiniz.id Benzersizliği: document.getElementById() metodu için kullanılan id nitelikleri, HTML belgesi içinde benzersiz olmalıdır. Aynı id'ye sahip birden fazla element bulunması durumunda, metot yalnızca ilk eşleşeni döndürecektir.HTMLCollection ve NodeList: getElementsByClassName ve getElementsByTagName metotları HTMLCollection, querySelectorAll ise NodeList döndürür. Bu koleksiyonlar dizi benzeri nesnelerdir ancak tüm dizi metotlarına (map, filter vb.) doğrudan sahip değildirler. Üzerlerinde döngü kurmak için for...of veya Array.from().forEach() kullanabilirsiniz.element.style.cssText özelliğini kullanabilir veya CSS sınıflarını (classList) manipüle edebilirsiniz.innerHTML ile doğrudan DOM'a eklerken dikkatli olun. Kötü niyetli kullanıcılar, bu yöntemle sitenize Cross-Site Scripting (XSS) saldırıları yapabilirler. Güvenliğiniz için genellikle textContent kullanmak veya girdileri sanitize etmek daha iyidir.null Kontrolü: DOM elementlerini seçerken, bazen elementin sayfada var olmayabileceği durumlar olabilir. Bu tür durumlarda, döndürülen değer null olacaktır. Kodunuzun beklenmedik hatalar vermesini önlemek için element üzerinde işlem yapmadan önce bir null kontrolü yapmak iyi bir pratiktir (örneğin, if (element) { ... }).
                SQL veritabanlarında, farklı tablolar arasında ilişkisel veri kümelerini birleştirmek temel bir işlemdir. LEFT JOIN (sol dış birleşim) işlemi, iki veya daha fazla tabloyu belirli bir koşul üzerinden birleştirirken, sol tablodaki tüm kayıtları, sağ tablodaki eşleşen kayıtlarla birlikte döndürür. Sağ tabloda eşleşme bulunamayan durumlarda, sağ tablonun sütunları için NULL değerleri döndürülür. Bu makale, LEFT JOIN'in sözdizimini, detaylı açıklamasını ve pratik kullanım örneklerini sunmaktadır.
LEFT JOIN komutunun genel sözdizimi aşağıdaki gibidir:
SELECT
    sutun1, sutun2, ...
FROM
    sol_tablo
LEFT JOIN
    sag_tablo
ON
    sol_tablo.eslesme_sutunu = sag_tablo.eslesme_sutunu;SELECT sutun1, sutun2, ...: Sorgu sonucunda döndürülmesini istediğiniz sütunları belirtirsiniz. Bu sütunlar hem sol hem de sağ tablodan gelebilir.
FROM sol_tablo: Birleşimin sol tarafında yer alacak ana tabloyu belirtir. Bu tablodaki tüm kayıtlar sonuç kümesine dahil edilecektir.
LEFT JOIN sag_tablo: Birleşimin sağ tarafında yer alacak tabloyu belirtir. Sol tablodaki kayıtlarla eşleşen kayıtlar bu tablodan alınır.
ON sol_tablo.eslesme_sutunu = sag_tablo.eslesme_sutunu: İki tablo arasındaki eşleşme koşulunu tanımlar. Bu koşul genellikle birincil anahtar (PRIMARY KEY) ve yabancı anahtar (FOREIGN KEY) ilişkisi üzerinden kurulur.
Aşağıdaki örneklerde, Musteriler ve Siparisler adında iki tablo kullandığımızı varsayalım. Musteriler tablosunda MusteriID, Ad, Soyad sütunları; Siparisler tablosunda ise SiparisID, MusteriID, SiparisTarihi, Tutar sütunları bulunmaktadır.
Bu sorgu, tüm müşterileri ve onların mevcut siparişlerini listeler. Eğer bir müşterinin hiç siparişi yoksa, Siparisler tablosuna ait sütunlar için NULL değerleri döndürülür.
SELECT
    M.MusteriID,
    M.Ad,
    M.Soyad,
    S.SiparisID,
    S.SiparisTarihi,
    S.Tutar
FROM
    Musteriler AS M
LEFT JOIN
    Siparisler AS S ON M.MusteriID = S.MusteriID;LEFT JOIN ile birlikte WHERE koşulu kullanarak, sağ tabloda eşleşme bulunamayan kayıtları filtreleyebiliriz. Bu örnekte, henüz sipariş vermemiş müşteriler listelenir.
SELECT
    M.MusteriID,
    M.Ad,
    M.Soyad
FROM
    Musteriler AS M
LEFT JOIN
    Siparisler AS S ON M.MusteriID = S.MusteriID
WHERE
    S.SiparisID IS NULL;Birden fazla tabloyu birleştirmek için zincirleme LEFT JOIN kullanılabilir. Örneğin, müşterilerin siparişlerini ve bu siparişlerin detaylarını görmek isteyebiliriz. SiparisDetaylari adında bir üçüncü tablo olduğunu varsayalım.
SELECT
    M.Ad,
    S.SiparisID,
    SD.UrunAdi,
    SD.Miktar
FROM
    Musteriler AS M
LEFT JOIN
    Siparisler AS S ON M.MusteriID = S.MusteriID
LEFT JOIN
    SiparisDetaylari AS SD ON S.SiparisID = SD.SiparisID;Sol Tablo Önceliği: LEFT JOIN, sol tablonun tüm kayıtlarını garanti eder. Sağ tabloda eşleşme bulunmasa bile sol tablodaki kayıtlar sonuç kümesinde yer alır.
NULL Değerleri: Sağ tabloda eşleşen kayıt bulunamadığında, sağ tablodaki sütunlar için NULL değerleri döndürülür. Bu durum, eşleşmeyen kayıtları filtrelemek (örneğin, WHERE sag_tablo.anahtar_sutun IS NULL kullanarak) için kullanılabilir.
Performans Etkisi: Büyük tablolarda JOIN işlemleri performans üzerinde etkili olabilir. İndeksli sütunlar üzerinde birleştirme yapmak sorgu hızını artırır.
Alias Kullanımı: Tablo isimleri için kısa takma adlar (AS M, AS S gibi) kullanmak, sorguyu daha okunaklı hale getirir ve yazım hatalarını azaltır.
INNER JOIN ile Farkı: INNER JOIN yalnızca iki tabloda da eşleşen kayıtları döndürürken, LEFT JOIN sol tablonun tüm kayıtlarını döndürür ve sağ tablodaki eşleşmeyenler için NULL kullanır.
2025 © Tüm Hakları Saklıdır.