Çö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

Centipat
Katılım
4 Eylül 2022
Mesajlar
65
Çö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
    js-hata.png
    8,4 KB · Görüntüleme: 97
Çözüm
@serhatcandev

Yeni başladım.
Bir türlü kodu doğru şekilde yazamadım.
İstediğim tam olarak şu:
5 tane radio buton var.
Kullanıcı herhangi birine tıkladığında arka plan rengi değişecek.
Kullanıcı seçimini değiştirince arka plan eski haline gelecek.
Bu sefer yeni seçilen radio butonun arka planı değişecek.
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.
label birden fazla element tutan bir obje (NodeList) olduğu için label.addEventListener şeklinde bir kullanım söz konusu değil. Bir döngü ya da forEach() ile label objesinin içindeki elementlere erişip event atayabilirsiniz.
 
Eğer ki birden fazla şeye tıklanılacak ise onları
Kod:
forEach()
olarak girmen gerekiyor. Mesela
JavaScript:
labels.forEach(label) {
    label.addEventListener('click', () => {
        test.classList.add('css')
    })
}
 
@serhatcandev

Yeni başladım.
Bir türlü kodu doğru şekilde yazamadım.
İstediğim tam olarak şu:
5 tane radio buton var.
Kullanıcı herhangi birine tıkladığında arka plan rengi değişecek.
Kullanıcı seçimini değiştirince arka plan eski haline gelecek.
Bu sefer yeni seçilen radio butonun arka planı değişecek.
 
@serhatcandev

Yeni başladım.
Bir türlü kodu doğru şekilde yazamadım.
İstediğim tam olarak şu:
5 tane radio buton var.
Kullanıcı herhangi birine tıkladığında arka plan rengi değişecek.
Kullanıcı seçimini değiştirince arka plan eski haline gelecek.
Bu sefer yeni seçilen radio butonun arka planı değişecek.
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.
 
Çözüm
@serhatcandev

Kod:
<script>
 function submit(){
 var buton = document.getElementById("buton");
 buton.addEventListener("click",function(){
 console.log("deneme")
 })

 }
 </script>

GitHub:
Dosya burada

İlerliyorum.
Butona tıklayınca addeventlistener ile konsola çıktı kat sayılarca geliyor.
Yani 3 tane, 10 tane, 15 tane gibi.
Bu neden oluyor?

@serhatcandev
Kod:
<script>
        function submit(){

            var buton = document.getElementById("buton");
            var label = document.getElementById("lbl");

            buton.addEventListener("click",function(){
                label.style.backgroundColor= "red";
            })
            
        }
    </script>

Buraya kadar ilerledim.
Butona 2 kez tıklayınca değişim gerçekleşiyor.
 
Son düzenleme:
@serhatcandev

Kod:
<script>
 function submit(){
 var buton = document.getElementById("buton");
 buton.addEventListener("click",function(){
 console.log("deneme")
 })

 }
 </script>

GitHub:
Dosya burada

İlerliyorum.
Butona tıklayınca addeventlistener ile konsola çıktı kat sayılarca geliyor.
Yani 3 tane, 10 tane, 15 tane gibi.
Bu neden oluyor?

@serhatcandev
Kod:
<script>
        function submit(){

            var buton = document.getElementById("buton");
            var label = document.getElementById("lbl");

            buton.addEventListener("click",function(){
                label.style.backgroundColor= "red";
            })
           
        }
    </script>

Buraya kadar ilerledim.
Butona 2 kez tıklayınca değişim gerçekleşiyor.
İlk defa sizden duydum kat olayını.
 
@serhatcandev
Kod:
<script>
                
        var labels = document.querySelectorAll("label");
        labels.forEach(function(label){
            label.addEventListener("click", function(){
                label.style.backgroundColor = "orange";
            })
        })
        
    </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

Tamamdır!
Buraya kadar ilerledim.
Şimdi yapmak istediğim radio butonlardan ötekini seçince öncekinin eski haline gelmesi ve yeni seçilene değişikliklerin uygulanması.
 
@serhatcandev
Kod:
<script>
               
        var labels = document.querySelectorAll("label");
        labels.forEach(function(label){
            label.addEventListener("click", function(){
                label.style.backgroundColor = "orange";
            })
        })
       
    </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

Tamamdır!
Buraya kadar ilerledim.
Şimdi yapmak istediğim radio butonlardan ötekini seçince öncekinin eski haline gelmesi ve yeni seçilene değişikliklerin uygulanması.
Aynen bak anlattığım şeyi yapmışsın. Şimdi tek yapman gereken if else eklemek. Eğer ki arka plan rengi değişmiş ise else olarak eskiye döndürmesini yani stock yapabilirsin.
 
@serhatcandev
Kod:
var labels = document.querySelectorAll("label");
        labels.forEach(function(label){
            label.addEventListener("click", function(){
                if(label.style.backgroundColor = "yellow") {
                    label.style.backgroundColor = "orange";
                }
                else if(label.style.backgroundColor = "orange"){
                    label.style.backgroundColor = "yellow";
                }
            })
        })

Böyle bir şey yaptım ama olmadı.
 

Yeni konular

Geri
Yukarı