Çözüldü JavaScript ile radio button'a tıklanınca CSS değiştirme

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

01yildizmustafa

Decapat
Katılım
4 Eylül 2022
Mesajlar
66
Çözümler
2
Daha fazla  
Cinsiyet
Erkek
Problem:
Kullanıcı radio butonlardan herhangi birine tıklayınca ilgili elementin arka plan rengini değiştirmek istiyorum.
Fakat hata alıyorum.
(Aldığım hatanın resmini koydum)

GitHub:
Kodlar burada
 

Dosya Ekleri

  • js-hata.png
    8,4 KB · Görüntüleme: 141
Çözüm
Bak şimdi istersen önce normal bir şekilde yapmayı dene. Bir buton aç html'de. JavaScript'de bunu tanımla. Sonrasında ise addEventListener ver. click olduğunda arka plan rengi değişsin. Önce bunu yap sonrasında ise radiobutonları querySelectorAll ile seç ve forEach ile döndürmeyi dene.

Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.
Else if yapma. Direkt olarak else ver. Arka plan rengi hep sarı ve turuncudan oluşuyor değil mi
 
@bonz
Kod:
<script>
        // 1. değişiklik yapılacak element grubunu seç.
        // 2. seçtiğin element grubunun her bir elemanına ulaş
        // 3. ulaştığın elemanı dinle
        // 4. gerekli değişikliği yap

        var labels = document.querySelectorAll("label");

        labels.forEach(function(label) {
            label.addEventListener("click", function() {
                if (label.style.backgroundColor = "purple") {
                    label.style.backgroundColor = "green";
                } else {
                    label.style.backgroundColor = "purple"
                }
            })
        })
    </script>

Normalde buton rengi purple. Kullanıcı birine tıkladığında rengi green olucak, oluyor da.
Fakat öteki radio butona tıklanınca ilkinin eski haline yani purple rengine dönmesi gerek.
Else if yerine direk else verdim, olmadı.

Yani anahtar gibi: biri green olduğunda diğeri purple, purple olduğunda öteki green olucak. Aynı anda ikisi aynı renk olmasın.

----------------------------------------------------------------------------------------------------------------------------------------------------------

@bonz

Sonuç:
İstediğim kutuya tıklayınca rengini değiştirebiliyorum.

Amaç:
Bu kutulardan herhangi birine tıklayınca eğer hali hazırda rengi değişmiş(zaten daha önce tıklanmış) bir kutu varsa o eski rengine dönsün. Yeni tıklanan kutu rengini değiştirsin.


Başından beri amacım yukarıda dediklerim.
 

Dosya Ekleri

  • a.png
    10,1 KB · Görüntüleme: 37
Son düzenleme:
Tebrik ederim sizi böyle devam edin. Eminim ki çok bilgi yüklenmiştir bu projede.
 
@bonz

Tam olarak istediğime ulaşamadım, az kaldı.

Şimdi 5 tane kutu var.
Bunlardan birine tıklayınca renk değişiyor = tamam
Şimdi varsayalım "1" numaralı kutuya tıkladım ve rengi değişti.
Şimdi de "4" numaralı kutuya tıkladım, onun da rengi değişti.
4 numaralının rengi değişirken "1" numaralı kutunun eski haline dönmesi gerek.
Yani kullanıcı 5 tane kutu içinden aynı anda birden fazla kutunun rengini değiştiremez.
 

Dosya Ekleri

  • a.png
    10,1 KB · Görüntüleme: 34
X
Contains'i biliyor musunuz?
 
@bonz

Hayır.
Yeniyim.
Js ile yapmaya çalıştığım 2. proje bu.
Bilmiyorum ama toggle() nasıl olur?
 
@bonz
Hiç sormadan deneyin bence. Hemen YouTube'a JavaScript contains yazın, 5 dakika da anlatırlar o yöntem ile yapmayı deneyebilirsiniz.
Araştırırken includes metodu ile karşılaştım.
Seçili olanı bir diziye ata daha sonra da dizide olan elemanın arka planını değiştir gibi...
Uğraştım, yapamadım.
Siz en başından, sanki sıfırdan kendiniz yazıyor olsaydınız nasıl ilerlerdiniz?


@bonz

Sorunu hallettim.
Teşekkürler

Kodlar:


Kod:
<script>
        var labels = document.querySelectorAll("label");


        labels.forEach(function(label) {

            label.addEventListener("click", function() {

                labels.forEach (function(label) {
                    label.style.backgroundColor = "purple";
                })

                label.style.backgroundColor = "red";
            })
        })
    </script>
 
Son düzenleme:
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…