Bu ders için video bulunmamaktadır.
Ders İçeriği
Giriş
Önceki derste DOM'un temellerini ve HTML elemanlarını nasıl seçeceğimizi öğrendik. Artık seçtiğimiz elemanların sadece metin içeriklerini değil, aynı zamanda görünüşlerini ve davranışlarını belirleyen niteliklerini (attributes) ve CSS stillerini de JavaScript ile nasıl değiştirebileceğimizi keşfedeceğiz.
Bir web sayfasının dinamik ve etkileşimli olmasını sağlayan önemli unsurlardan biri, elemanların niteliklerini (örneğin bir resmin src
'sini değiştirmek, bir bağlantının href
'ini güncellemek) ve stillerini (örneğin bir elemanın rengini, boyutunu veya konumunu değiştirmek) anlık olarak güncelleyebilmektir. JavaScript, DOM aracılığıyla bu işlemleri kolayca yapmamızı sağlar.
Bu derste, HTML elemanlarının niteliklerini okuma, ayarlama, kontrol etme ve kaldırma yöntemlerini öğreneceğiz. Ayrıca, elemanların CSS sınıflarını yönetmek için kullanılan classList
özelliğini ve doğrudan inline stilleri değiştirmek için style
özelliğini nasıl kullanacağımızı göreceğiz.
HTML Niteliklerini (Attributes) Yönetme
HTML elemanlarının davranışlarını ve özelliklerini belirleyen nitelikler (örneğin id
, class
, src
, href
, alt
, disabled
, value
vb.) JavaScript ile yönetilebilir.
Nitelik Değerini Alma: getAttribute(nitelikAdi)
Bir elemanın belirtilen niteliğinin değerini string olarak döndürür. Eğer nitelik mevcut değilse null
döndürür.
Nitelik Değerini Ayarlama: setAttribute(nitelikAdi, deger)
Bir elemanın belirtilen niteliğine yeni bir değer atar. Eğer nitelik zaten varsa, değeri güncellenir; yoksa, yeni bir nitelik olarak eklenir.
Nitelik Varlığını Kontrol Etme: hasAttribute(nitelikAdi)
Bir elemanın belirtilen niteliğe sahip olup olmadığını kontrol eder. true
veya false
döndürür.
Nitelik Kaldırma: removeAttribute(nitelikAdi)
Bir elemandan belirtilen niteliği kaldırır.
Doğrudan Özellik Erişimi (Property Access)
Bazı yaygın HTML nitelikleri (id
, className
, src
, href
, value
, disabled
vb.) doğrudan DOM nesnesinin özellikleri (properties) olarak da erişilebilir ve değiştirilebilir. Bu genellikle getAttribute
/setAttribute
kullanmaktan daha kısadır.
Not: Nitelik (attribute) ve özellik (property) arasında ince bir fark vardır. Nitelikler HTML kodunda tanımlanır, özellikler ise DOM nesnesine aittir. Çoğu durumda birbirleriyle senkronize çalışırlar, ancak value
gibi bazı durumlarda farklılık gösterebilirler. Genellikle güncel durumu almak için özellik erişimi (element.value
) tercih edilir.
CSS Sınıflarını Yönetme: classList
Bir elemanın görünümünü değiştirmenin en yaygın yolu ona CSS sınıfları eklemek veya çıkarmaktır. JavaScript, element.classList
özelliği aracılığıyla bunu kolayca yapmamızı sağlar. classList
, elemanın sınıf listesini temsil eden bir DOMTokenList
nesnesidir ve kullanışlı metodlar sunar:
add("sinifAdi1", "sinifAdi2", ...)
: Bir veya daha fazla sınıf adı ekler.remove("sinifAdi1", "sinifAdi2", ...)
: Bir veya daha fazla sınıf adı kaldırır.toggle("sinifAdi", zorunlu?)
: Eğer sınıf varsa kaldırır, yoksa ekler. İkinci argümantrue
ise sınıfı ekler,false
ise kaldırır.contains("sinifAdi")
: Elemanın belirtilen sınıfa sahip olup olmadığını kontrol eder (true
/false
).replace("eskiSinif", "yeniSinif")
: Mevcut bir sınıfı yenisiyle değiştirir.
İpucu: classList
kullanmak, element.className
özelliğini doğrudan string olarak değiştirmekten daha güvenli ve kullanışlıdır, çünkü mevcut diğer sınıfları yanlışlıkla silme riskini ortadan kaldırır.
Inline Stilleri Yönetme: style
Özelliği
Bir elemanın CSS stillerini doğrudan JavaScript ile değiştirmek için element.style
özelliği kullanılır. Bu özellik, elemanın inline (style="..."
) stillerini temsil eden bir CSSStyleDeclaration
nesnesidir.
CSS özellik adları JavaScript'te camelCase formatında yazılır (örneğin, background-color
yerine backgroundColor
, font-size
yerine fontSize
).
Uyarı: element.style
özelliği sadece elemana doğrudan atanmış inline stilleri okuyabilir ve değiştirebilir. Harici CSS dosyalarından veya <style>
etiketlerinden gelen stilleri okumaz. Ayrıca, çok fazla inline stil kullanmak CSS'in yönetimini zorlaştırabilir. Genellikle, stilleri değiştirmek için CSS sınıflarını (classList
ile) yönetmek daha iyi bir yaklaşımdır.
Hesaplanmış Stilleri Alma: getComputedStyle()
Bir elemana uygulanan tüm CSS kurallarının (inline, internal, external) sonucunda ortaya çıkan nihai stil değerini almak için window.getComputedStyle(element)
metodu kullanılır. Bu metod, sadece okunabilir bir CSSStyleDeclaration
nesnesi döndürür.
Alıştırmalar
- Sayfadaki tüm bağlantıların (
<a>
etiketleri)target
niteliğini_blank
olarak ayarlayın. - Bir butona tıklandığında, sayfadaki bir resmin
src
niteliğini farklı bir resim URL'si ile değiştirin. - Bir metin kutusuna (
<input type="text">
) odaklanıldığında (focus olayı) arka plan rengini değiştiren, odaktan çıkıldığında (blur olayı) eski rengine döndüren bir kod yazın (style
özelliğini kullanın). - Bir
div
elemanına tıklandığında,active
sınıfını ekleyip kaldıran (toggle) bir kod yazın (classList
kullanın). - Sayfadaki bir paragrafın (
<p>
) hesaplanmış yazı tipi boyutunu (font-size) konsola yazdırın (getComputedStyle
kullanın).
Bu derste, JavaScript kullanarak HTML elemanlarının niteliklerini ve stillerini nasıl manipüle edeceğimizi öğrendik:
- Nitelik Yönetimi:
getAttribute()
: Nitelik değerini alır.setAttribute()
: Nitelik değerini ayarlar veya ekler.hasAttribute()
: Nitelik varlığını kontrol eder.removeAttribute()
: Niteliği kaldırır.- Doğrudan özellik erişimi (
element.id
,element.src
vb.) de kullanılabilir.
- CSS Sınıfları Yönetimi (
classList
):add()
: Sınıf ekler.remove()
: Sınıf kaldırır.toggle()
: Sınıfı ekler/kaldırır.contains()
: Sınıf varlığını kontrol eder.replace()
: Sınıfı değiştirir.
- Inline Stil Yönetimi (
style
): Elemanın inline stillerini doğrudan değiştirir (CSS özellik adları camelCase kullanılır:element.style.backgroundColor
). - Hesaplanmış Stil Alma (
getComputedStyle()
): Bir elemana uygulanan nihai CSS stil değerlerini okur.
Nitelikleri ve stilleri JavaScript ile dinamik olarak değiştirebilmek, web sayfalarına etkileşim katmanın ve kullanıcı deneyimini zenginleştirmenin anahtarıdır.
Bir sonraki derste, DOM ağacına yeni elemanlar eklemeyi, mevcutları silmeyi ve elemanlar arasında gezinmeyi öğreneceğiz.