JavaScript kodu Showpage değeri 1 olunca hata veriyor

furkaniko

Hectopat
Katılım
17 Mart 2021
Mesajlar
249
Çözümler
1
Daha fazla  
Cinsiyet
Erkek
Meslek
Siber Güvenlik Uzmanı
Arkadaşlar merhaba, HTML ve JavaScript'ten oluşan bir kodum var. Kodum şu şekilde çalışması gerekiyor:

Kod:
.butce-div

Class ına sahip radio buton seçili olduğu zaman arka plan rengi değişecek fakat şu şekilde bir hata var kodum normal şekilde çalışırken JS kısmında birkaç değişiklik yaptıktan sonra çalışmamaya başladı.

Kodum şu şekilde:

Kod:
 <div class="form-page sayfa6" id="form-page-6">
 <h4 class="ic-baslik">Bu proje için ayrılmış bütçe aralığınız nedir? (₺)</h4>
 <div class="row fiyatlar">
 <div class="col-md-1 col-sm-6 ic-fiyat1">
 <label for="option5" class="icon-radio">
 <input type="radio" id="option5" name="options" value="fiyat1" checked />
 <div class="butce-div">1.000-5.000</div>
 </label>
 </div>
 <div class="col-md-1 col-sm-6 ic-fiyat">
 <label for="option6" class="icon-radio">
 <input type="radio" id="option6" name="options" value="fiyat2" />
 <div class="butce-div">5.000-10.000</div>
 </label>
 </div>
 <div class="col-md-1 col-sm-6 ic-fiyat">
 <label for="option7" class="icon-radio">
 <input type="radio" id="option7" name="options" value="fiyat3" />
 <div class="butce-div">10.000-15.000</div>
 </label>
 </div>
 <div class="col-md-1 col-sm-6 ic-fiyat">
 <label for="option8" class="icon-radio">
 <input type="radio" id="option8" name="options" value="fiyat4" />
 <div class="butce-div">10.000-15.000</div>
 </label>
 </div>
 <div class="col-md-1 col-sm-6 ic-fiyat">
 <label for="option9" class="icon-radio">
 <input type="radio" id="option9" name="options" value="fiyat5" />
 <div class="butce-div">15.000-20.000</div>
 </label>
 </div>
 <div class="col-md-1 col-sm-6 ic-fiyat">
 <label for="option10" class="icon-radio">
 <input type="radio" id="option10" name="options" value="fiyat6" />
 <div class="butce-div">20.000-30.000</div>
 </label>
 </div>
 <div class="col-md-1 col-sm-6 ic-fiyat">
 <label for="option11" class="icon-radio">
 <input type="radio" id="option11" name="options" value="fiyat7" />
 <div class="butce-div">30.000+</div>
 </label>
 </div>
 </div>

JavaScript kodum:

Kod:
 // İlk sayfayı göster.
 showPage(1);

 // İleri butonuna tıklandığında, mevcut sayfayı gizle ve bir sonraki sayfayı göster.
 // İleri butonuna tıklandığında, mevcut sayfayı gizle ve bir sonraki sayfayı göster.
 function nextPage(currentPage) {
 var isValid = true;

 // Mevcut sayfadaki tüm inputları kontrol et.
 document.getElementById("form-page-" + currentPage).querySelectorAll("input, select, textarea").forEach(function(element) {
 // Sadece sirket-ad ve sirket-gorev inputlarını kontrol etme ve tr,en,de,isp,url1,url2,url3,url4,url5,url6,url7,url8,url9 name'ine sahip inputları kontrol etme.
 if (element.name !== "sirket-ad" && element.name !== "sirket-gorev" && element.name !== "tr" && element.name !== "en" && element.name !== "de" && element.name !== "isp" && element.name !== "url1" && element.name !== "url2" && element.name !== "url3" && element.name !== "url4" && element.name !== "url5" && element.name !== "url6" && element.name !== "url7" && element.name !== "url8" && element.name !== "url9" && element.name !== "url10" && element.name !== "dosya-ekle" && element.name !== "begenme-sebebi") {
 if (!element.value) {
 // Eğer boşsa hata mesajı göster ve isValid'i false yap.
 isValid = false;
 var errorMessage = document.createElement("span");
 errorMessage.className = "error-message";
 errorMessage.textContent = "* tüm alanları doldurunuz";
 element.parentNode.appendChild(errorMessage);
 }
 }
 });

 // Checkboxların kontrolü.
 var checkboxes = document.querySelectorAll('input[type="checkbox"]');
 var isChecked = false;
 checkboxes.forEach(function(checkbox) {
 if (checkbox.checked) {
 isChecked = true;
 }
 });
 if (!isChecked) {
 // Hiçbir checkbox seçili değilse hata mesajı göster ve isValid'i false yap.
 var errorMessage = document.createElement("span");
 errorMessage.className = "error-message";
 errorMessage.textContent = "* En az bir checkbox seçiniz";
 document.getElementById("checkbox-container").appendChild(errorMessage);
 isValid = false;
 }

 // Tüm inputlar doluysa bir sonraki sayfayı göster.
 if (isValid) {
 // Mevcut sayfayı gizle.
 document.getElementById("form-page-" + currentPage).classList.remove("active");
 // Bir sonraki sayfayı göster.
 document.getElementById("form-page-" + (currentPage + 1)).classList.add("active");
 }
 }
 // secili olunca renk degis.
 const sirketDiv = document.querySelector('.sirket');
 const sahisDiv = document.querySelector('.sahis');

 sirketDiv.addEventListener('click', () => {
 sirketDiv.classList.add('selected');
 sahisDiv.classList.remove('selected');
 });

 sahisDiv.addEventListener('click', () => {
 sahisDiv.classList.add('selected');
 sirketDiv.classList.remove('selected');
 });

 // Radio butonlarını seç.
 const bireyselRadio = document.querySelector('input[name="form1"][value="bireysel"]');
 const sirketRadio = document.querySelector('input[name="form1"][value="sirket"]');
 // Şirket bilgileri divini seç.
 const sirketBilgileriDiv = document.querySelector('.sirket-bilgileri');
 // Şirket radio butonu seçildiğinde.
 sirketRadio.addEventListener('change', function() {
 if (sirketRadio.checked) {
 sirketBilgileriDiv.style.display = 'block';
 } else {
 sirketBilgileriDiv.style.display = 'none';
 }
 });
 // Bireysel radio butonu seçildiğinde.
 bireyselRadio.addEventListener('change', function() {
 sirketBilgileriDiv.style.display = 'none';
 });

 // secili olunca renk degis2.
 // Tüm inputlar seçili olmadığında butce-div'lerin arka plan rengini varsayılan renge ayarla.
 var butceDivs = document.querySelectorAll('.butce-div');
 for (var i = 0; i < butceDivs.length; i++) {
 if (!butceDivs[i].parentNode.querySelector('input[type="radio"]').checked) {
 butceDivs[i].style.backgroundColor = 'transparent';
 }
 }

 // Radio buttonlara tıklandığında seçilen butce-div'in arka plan rengini ayarla.
 var radioButtons = document.querySelectorAll('input[type="radio"]');
 for (var i = 0; i < radioButtons.length; i++) {
 radioButtons[i].addEventListener('click', function() {
 var checkedRadio = document.querySelector('input[type="radio"]:checked');
 var butceDiv = checkedRadio.parentNode.querySelector('.butce-div');
 var allButceDivs = document.querySelectorAll('.butce-div');
 for (var j = 0; j < allButceDivs.length; j++) {
 allButceDivs[j].style.backgroundColor = 'transparent';
 }
 butceDiv.style.backgroundColor = '#6A48F0';

 });
 }

 // Geri butonuna tıklandığında, mevcut sayfayı gizle ve bir önceki sayfayı göster.
 function prevPage(currentPage) {
 // İlk sayfadaysak, geri dönüşü engelle.
 if (currentPage === 1) {
 return;
 } else {
 // Mevcut sayfayı gizle.
 document.getElementById("form-page-" + currentPage).classList.remove("active");
 // Bir önceki sayfayı göster.
 document.getElementById("form-page-" + (currentPage - 1)).classList.add("active");
 }
 }

 // Gösterilen sayfayı belirle.
 function showPage(pageNumber) {
 // Tüm sayfaları gizle.
 var pages = document.getElementsByClassName("form-page");
 for (var i = 0; i < pages.length; i++) {
 pages[i].classList.remove("active");
 }
 // Belirtilen sayfayı göster.
 document.getElementById("form-page-" + pageNumber).classList.add("active");
 }

Çözemediğim hata şu şekilde JavaScript kodunun en başındaki showpage(1); değerini 6 ya çektiğim zaman kod düzgün şekilde çalışıyor değeri 6 yaptığımda sadece form-page-6 divi gözüküyorr değer 1 olduğu zaman çalışmıyor kodumun çalışma mantığı form-page-1'den form-page-7'ye kadar ayrı divlerim var ileri butonuna bastıkça sonraki div ekrana geliyor.
 

Geri
Yukarı