
Web sayfalarında dinamik değişiklikler yapmak için DOM (Document Object Model) manipülasyonu temel bir tekniktir. DOM, bir sayfanın HTML yapısını ağaç şeklinde temsil eder ve JavaScript ile bu ağaç üzerinden eleman seçme, sınıf yönetimi ve içerik güncelleme işlemleri yapılabilir. Temel kavramları ve pratik örnekleri bu rehberde adım adım göreceksiniz (temel referanslar arasında resmi ve öğretici kaynaklar yer alır).
DOM, tarayıcının yüklediği HTML belgesini programatik olarak gezip değiştirebileceğiniz bir API kümesidir. JavaScript ile DOM üzerinde işlem yaparak sayfa içeriğini, görünümlerini ve etkileşimlerini dinamik hale getirebilirsiniz. Daha fazla teknik arka plan için TechLead - DOM açıklaması kaynağına bakabilirsiniz.
DOM elemanlarını seçmek için en yaygın kullanılan yöntemler document.querySelector ve document.querySelectorAll metodlarıdır. Bu metotlar CSS seçicileri kullanır; tek bir eleman almak için querySelector, aynı seçiciyle eşleşen tüm elemanları almak için querySelectorAll kullanılır. W3Schools'ta bu metodların kullanımı örneklerle açıklanmıştır: W3Schools - querySelector().
/* HTML örneği (gösterim için < ve > kaçış karakterleri kullanıldı) */
<div id="app">
<h1 id="title">Merhaba</h1>
</div>
/* JavaScript */
const title = document.querySelector('#title');
title.innerText = 'Yeni Başlık';
Not: querySelectorAll bir NodeList döner; modern tarayıcılarda NodeList üzerinde forEach çalışır, ihtiyaç halinde Array.from ile diziye çevrilebilir.
Elementlerin sınıflarını değiştirmek için element.classList API'si kullanılır. Sık kullanılan metodlar: add, remove, toggle, contains. Bu API DOM sınıflarıyla güvenli ve basit şekilde çalışmaya uygundur. Seçme ve değiştirme örnekleri için topluluk tartışmaları ve örnekler sayfada incelenebilir: Stack Overflow - Selecting and modifying DOM elements.
const el = document.querySelector('.card');
el.classList.add('highlight');
el.classList.remove('hidden');
el.classList.toggle('active');
classList.toggle, ikinci bir boolean parametre alarak belirli bir değere göre açık/kapat işlemini kesinleştirebilir: el.classList.toggle('active', isActive).
Metin ve HTML içeriğini güncellemek için yaygın olarak kullanılan özellikler innerText, innerHTML ve textContent'tir. innerText kullanıcının gördüğü metni yansıtır; innerHTML bir elementin HTML içeriğini okur/yazar; textContent ise elementin tüm metinsel içeriğini ham olarak alır/yazar.
innerHTML kullanırken dışarıdan gelen HTML içeriğini doğrudan eklemek XSS riski oluşturabileceği için dikkat gerektirir; eğer kullanıcı kaynaklı HTML eklenmesi gerekiyorsa, içerik uygun şekilde temizlenmelidir. innerText ve innerHTML arasındaki farkları ve ne zaman hangisini tercih edeceğinizi örneklerle inceleyebilirsiniz: Code Hints - DOM Manipulation.
const message = document.querySelector('#msg');
message.textContent = 'Form başarıyla gönderildi.';
Sayfaya yeni düğümler eklemek için document.createElement ile bir node oluşturup, hedef elemana appendChild ile ekleyebilirsiniz. Birden fazla düğümü tek seferde eklemek için DocumentFragment kullanmak performans açısından faydalıdır. Temel ekleme işlemleri ve prototipler için referans: TechLead - DOM manipulation örnekleri.
const li = document.createElement('li');
li.textContent = 'Yeni madde';
const list = document.querySelector('#todoList');
list.appendChild(li);
Aşağıda sık karşılaşılan üç senaryo ve uygulanışı yer alıyor. Kodlar eğitim amaçlıdır; canlı projelerde kontrol ve doğrulama eklemeyi unutmayın.
/* HTML */
<h2 id="headline">Eski Başlık</h2>
/* JS */
const h = document.querySelector('#headline');
h.innerText = 'Güncellenmiş Başlık';
/* HTML */
<button id="btn">Göster/Gizle</button>
<div class="panel">İçerik</div>
/* JS */
const btn = document.querySelector('#btn');
const panel = document.querySelector('.panel');
btn.addEventListener('click', () => {
panel.classList.toggle('hidden');
});
/* HTML */
<input id="itemInput" type="text" />
<button id="add">Ekle</button>
<ul id="list"></ul>
/* JS */
const input = document.querySelector('#itemInput');
const addBtn = document.querySelector('#add');
const list = document.querySelector('#list');
addBtn.addEventListener('click', () => {
if (!input.value) return; // basit kontrol
const li = document.createElement('li');
li.textContent = input.value; // metin olarak ekle
list.appendChild(li);
input.value = '';
});
Bu rehber temel ve pratik örnekler üzerinden DOM manipülasyonunu ele aldı. Daha derin örnekler ve tarayıcı uyumluluğu için referans kaynakları inceleyin:
Yorumlar