İçeriğe geç

JavaScript · 6/8

Web'e özel: butona tıklama

DOM seçimi, durum ve olay dinleyicisini çalışan bir düğmede birleştirmek.

Önerilen çalışma: 25–45 dakika; örnekleri kendin uygula. Süre kişiye göre değişir.

Bu sayfada · 9 başlık

Başlamadan önce

Önceki dersteki örneği çalıştırmış olman ve dosya/çıktı ayrımını biliyor olman yararlı.

Öğrenme sırası: konuyu oku → çıktıyı tahmin et → örneği değiştir → alıştırmayı çöz → cevabını gerekçelendir.

JavaScript · Web'e özel: butona tıklama — videolu atölye: açıklamalı kavram şeması
Webino App öğretici şeması · Uygulama ekran görüntüsü değildir.

Videoyla adım adım izle

Türkçe açıklamalı sessiz görsel anlatım. Sesli ders veya kesintisiz ekran kaydı değildir. Duraklatıp kendi ortamında uygula.

Video bölümleri ve tam metin

Web'e özel: butona tıklama

DOM seçimi, durum ve olay dinleyicisini çalışan bir düğmede birleştirmek.

Kavramı kur

DOM, tarayıcının HTML belgesinden oluşturduğu programlanabilir yapıdır. querySelector uygun öğeyi bulur; bulamazsa null döndürür. Düğmenin kimliği ile seçicinin eşleşmesi gerekir. Kodu öğe oluşturulduktan sonra çalıştırmak için bu küçük örnekte script bölümünü düğmenin altına yerleştiriyoruz.

Neden böyle çalışıyor?

Bir olay dinleyicisi, tıklama gerçekleştiğinde ne yapılacağını tanımlar. Fonksiyonu dinleyiciye vermek ile o anda çağırmak aynı şey değildir. sayi, tıklamalar arasında saklanan durumdur; her olayda bir artar ve textContent ile arayüze yansıtılır. Metin içeriği için innerHTML kullanmak gerekmez.

Çalışma sırası

Kullanıcı etkileşimini yalnızca fareye göre düşünme. Gerçek button öğesi klavyeyle de kullanılabilir ve doğru temel semantiğe sahiptir. Düğmeyi Tab ile seçip Enter veya Space ile dene. Bir div üzerine tıklama koymak aynı davranışları otomatik sağlamaz.

İkinci örnek · 1

querySelector doğru id ile tek düğmeyi seçer. Kodun tamamı yazılı derste bulunur.

Kod

<button id="sayac">0 kez tıklandı</button>
<script>
const dugme = document.querySelector("#sayac");
let sayi = 0;
dugme.addEventListener("click", () => {
  sayi += 1;
  dugme.textContent = sayi + " kez tıklandı";
});
</script>

Beklenen sonucu oku

textContent yeni durumu düğme metnine güvenli biçimde yansıtır.

Beklenen çıktı: Başlangıçta 0; her tıklamada 1, 2, 3 kez tıklandı.

Bir değeri sen değiştir

Düğmeye üç kez bas; değerleri gözlemle. Bir sıfırlama düğmesi ekle ve aynı durumu 0 yap.

Hata nereden gelir?

Seçici yanlışsa null üzerinde metot çağırırsın; id ve çalışma sırasını kontrol et.

Kendi çözümünü kur

Fare kullanmadan her iki düğmeyi de çalıştır; odak göstergesini kaybetme. Sıfırla düğmesinin olayında hem sayi değerini hem görünen metni güncelle.

Çözüm varyasyonu · 1

Önce kendi denemeni yap; sonra bu varyasyonun girdileri ile sonucunu karşılaştır.

Kod

<button id="artir">Artır</button><button id="sifirla">Sıfırla</button><p id="deger">0</p>
<script>
let sayi = 0;
const sonuc = document.querySelector("#deger");
document.querySelector("#artir").addEventListener("click", () => { sonuc.textContent = ++sayi; });
document.querySelector("#sifirla").addEventListener("click", () => { sayi = 0; sonuc.textContent = sayi; });
</script>

Kendini kontrol et

Sayaç neden olay fonksiyonunun dışında tanımlanır? Yanıt: Tıklamalar arasında değerini koruması için; her olayda yeniden başlatılmaması gerekir.

Beklenen çıktı: Artır sayacı artırır; Sıfırla hem durumu hem görünümü 0 yapar.

Konu anlatımı

DOM, tarayıcının HTML belgesinden oluşturduğu programlanabilir yapıdır. querySelector uygun öğeyi bulur; bulamazsa null döndürür. Düğmenin kimliği ile seçicinin eşleşmesi gerekir. Kodu öğe oluşturulduktan sonra çalıştırmak için bu küçük örnekte script bölümünü düğmenin altına yerleştiriyoruz.

Bir olay dinleyicisi, tıklama gerçekleştiğinde ne yapılacağını tanımlar. Fonksiyonu dinleyiciye vermek ile o anda çağırmak aynı şey değildir. sayi, tıklamalar arasında saklanan durumdur; her olayda bir artar ve textContent ile arayüze yansıtılır. Metin içeriği için innerHTML kullanmak gerekmez.

Kullanıcı etkileşimini yalnızca fareye göre düşünme. Gerçek button öğesi klavyeyle de kullanılabilir ve doğru temel semantiğe sahiptir. Düğmeyi Tab ile seçip Enter veya Space ile dene. Bir div üzerine tıklama koymak aynı davranışları otomatik sağlamaz.

İlk örneği oku ve dene

6

Web'e özel: butona tıklama

JavaScript'in asıl gücü web sayfasıyla konuşmasıdır. Bu kod sayfadaki butonu bulur ve tıklanınca bir mesaj gösterir. Bunu bir .html dosyasına yapıştırıp açabilirsin.

JavaScript
<button id="buton">Bana tıkla</button>

<script>
  document.getElementById("buton").addEventListener("click", () => {
    alert("Merhaba! 👋");
  });
</script>

▶ Sonuç

Butona tıklayınca ekranda "Merhaba! 👋" yazan bir uyarı kutusu açılır.

Adım adım neden böyle çalışıyor?

  1. querySelector doğru id ile tek düğmeyi seçer.
  2. sayi başlangıç durumudur; dinleyicinin dışında tutulur.
  3. Olay gerçekleşince sayaç artar.
  4. textContent yeni durumu düğme metnine güvenli biçimde yansıtır.
106

İkinci çözümlü örnek

DOM seçimi, durum ve olay dinleyicisini çalışan bir düğmede birleştirmek.

JavaScript
<button id="sayac">0 kez tıklandı</button>
<script>
const dugme = document.querySelector("#sayac");
let sayi = 0;
dugme.addEventListener("click", () => {
  sayi += 1;
  dugme.textContent = sayi + " kez tıklandı";
});
</script>

▶ Sonuç

Başlangıçta 0; her tıklamada 1, 2, 3 kez tıklandı.

Kolaydan zora sen dene

  1. Düğmeye üç kez bas; değerleri gözlemle.
  2. Bir sıfırlama düğmesi ekle ve aynı durumu 0 yap.
  3. Fare kullanmadan her iki düğmeyi de çalıştır; odak göstergesini kaybetme.
İpucunu aç

Sıfırla düğmesinin olayında hem sayi değerini hem görünen metni güncelle.

Üç görevin açıklamalı çözümünü oku
  1. Üç basış sonrasında sayaç 3 olmalıdır; başlangıç 0’dır.
  2. Sıfırlama olayında hem sayi değerini 0 yap hem Text/DOM gösterimini aynı durumdan güncelle. Çözüm varyasyonunda iki düğmeli tam örnek var.
  3. Tab ile düğmeyi seç; Enter veya Space olayı çalıştırmalıdır. Görünür odak işaretini CSS ile kapatma.
Bir çözüm varyasyonu gör
206

Çözüm varyasyonu

Önce kendi görevlerini dene. Bu varyasyonda girdi ve sonuçları karşılaştır.

JavaScript
<button id="artir">Artır</button><button id="sifirla">Sıfırla</button><p id="deger">0</p>
<script>
let sayi = 0;
const sonuc = document.querySelector("#deger");
document.querySelector("#artir").addEventListener("click", () => { sonuc.textContent = ++sayi; });
document.querySelector("#sifirla").addEventListener("click", () => { sayi = 0; sonuc.textContent = sayi; });
</script>

▶ Sonuç

Artır sayacı artırır; Sıfırla hem durumu hem görünümü 0 yapar.

Yaygın hata ve çözümü

  1. Seçici yanlışsa null üzerinde metot çağırırsın; id ve çalışma sırasını kontrol et.
  2. Sayacı dinleyicinin içinde tekrar 0 yaparsan her basışta 1 görürsün; durumu dışarıda tut.

Kendini değerlendir

Bir buton tıklanınca kod çalıştırmak için hangi olayı dinlersin?

Ezberlemeden açıklayabiliyor musun?

Sayaç neden olay fonksiyonunun dışında tanımlanır?

Açıklamalı yanıt

Tıklamalar arasında değerini koruması için; her olayda yeniden başlatılmaması gerekir.

Kendi çözümünde bir girdiyi değiştir. Çalıştırmadan önce beklenen sonucu yaz; gerçek sonuçla karşılaştır ve fark varsa hangi satırdan kaynaklandığını açıkla.

Kaynak ve çalışma ortamı

Örnekler küçük öğretim senaryolarıdır. Java/C#/PHP/Swift çalışma ortamını kendi cihazında ayrıca doğrula; yazılı sonuçlar beklenen davranışı açıklar.

Resmî dil belgeleri
Bu içerik işine yaradı mı?

Görüşünü aşağıdan işaretleyebilir ve varsa notunu bırakabilirsin.