Çözüldü JS kodumdaki sorun

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.
Katılım
30 Haziran 2020
Mesajlar
165
Şöyle bir kodum var. Bir geri sayım uygulaması. 3 farklı tarih ve 3 farklı <div>'im var. Ben bu geri sayım kodunu 3 kere yazıp, tarihlerini değiştirsem evet istediğim olur ama ben tekrarlamak istemiyorum. Onun yerine foreach döngüsüne aldım, ve bir array oluşturdum. Kodda zaten görürsünüz. Sorun şu ki 3 div e de aynı zamanı uyguluyor. Aralarında 1 ay fark var ama hepsinde aynı tarihe göre geri sayım uyguluyor. Ben çözemedim size başvuruyorum. İyi günler.
 
Son düzenleyen: Moderatör:
Çözüm


Kod:
JavaScript:
var dates = ["2020/08/22 17:45:00", "2020/09/22 17:45:00", "2020/10/22 17:45:00"];
dates.forEach(i => {
    //Geri Sayım Kodu JS
var countDownDateTar = new Date(i).getTime(); //geri sayılacak ileri zamanki bir tarih
var dayText = "Gün";
var hourText = "Saat";
var minuteText = "Dakika";
var secondText = "Saniye";
if (countDownDateTar){ //tarih var ise
var x = setInterval(function() { //sayacı belirli aralıklarla yenile
var now = new Date().getTime(); //şimdiki zamanı al
var distance = countDownDateTar - now; //geri sayılacak tarih ile şimdiki tarih arasındaki zaman farkını al
if (distance < 0) { //zaman farkı yok ise belirtilen zamanı geçti
countDownDateTar = countDownDateTar + 7*24*60*60*1000; //Tanımlı tarihi 7 gün sonrası olarak ayarla (7günlük milisaniyeyi ekledik.)
}
else { //zaman farkı var ise
//aradaki zaman farkını gün,saat,dakika,saniye olarak böl
var days = Math.floor(distance / (1000 * 60 * 60 * 24)),
hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)),
minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60)),
seconds = Math.floor((distance % (1000 * 60)) / 1000),
days = (days?''+days+' '+dayText+'':''), //gun varsa gun degerini yaz
hours = (hours?''+hours+' '+hourText+'':''), //saat varsa saat degerini yaz
minutes = (minutes?''+minutes+' '+minuteText+'':''), //dakika varsa dakika degerini yaz
seconds = (seconds?''+seconds+' '+secondText+'':''); //saniye varsa saniye degerini yaz
//document.getElementById("countdown_timerTar").innerHTML = days + hours + minutes + seconds ; //yazdır
if (i == dates[0]) {
    document.getElementById("countdown_timerTar").innerHTML = (days + " " + hours + " " + minutes + " " + seconds)
}
if (i == dates[1]) {
    document.getElementById("countdown_timerTar2").innerHTML = (days + " " + hours + " " + minutes + " " + seconds)
}
if (i == dates[2]) {
    document.getElementById("countdown_timerTar3").innerHTML = (days + " " + hours + " " + minutes + " " + seconds)
}
}
}, 1000); //1 saniyede bir sayaç
}
});

HTML kısmına bunları "script" tagları arasına yapıştırırsınız, orayı biliyorsunuz zaten.
JavaScript:
if(i = 1) {
    document.getElementById("countdown_timerTar").innerHTML = (days + " " + hours + " " + minutes + " " + seconds)
}
if(i = 2) {
 
    document.getElementById("countdown_timerTar2").innerHTML = (days + " " + hours + " " + minutes + " " + seconds)
}
if(i = 3) {
 
    document.getElementById("countdown_timerTar3").innerHTML = (days + " " + hours + " " + minutes + " " + seconds)
}


Burada i=1, i=2, i=3 sana bir koşul vermez. Doğru kod:

JavaScript:
if(i == 1) {
    document.getElementById("countdown_timerTar").innerHTML = (days + " " + hours + " " + minutes + " " + seconds)
}
if(i == 2) {
    document.getElementById("countdown_timerTar2").innerHTML = (days + " " + hours + " " + minutes + " " + seconds)
}
if(i == 3) {
    document.getElementById("countdown_timerTar3").innerHTML = (days + " " + hours + " " + minutes + " " + seconds)
}


Oradaki "i" neyi kastediyor anlamadım. Ancak dates elemanlarını kastediyor ise şöyle deneyebilirsin:

JavaScript:
if (i == dates[0]) {
    document.getElementById("countdown_timerTar").innerHTML = (days + " " + hours + " " + minutes + " " + seconds)
}
if (i == dates[1]) {
    document.getElementById("countdown_timerTar2").innerHTML = (days + " " + hours + " " + minutes + " " + seconds)
}
if (i == dates[2]) {
    document.getElementById("countdown_timerTar3").innerHTML = (days + " " + hours + " " + minutes + " " + seconds)
}
Pek anlamam bu arada JavaScript'ten. Hatam varsa özür dilerim.
 
Son düzenleme:
Teşekkürler cevabınız için, zaten pek JS bilgisi gerektirmiyor galiba bu sorunda. PC geçince deneyeceğim.
 


Kod:
JavaScript:
var dates = ["2020/08/22 17:45:00", "2020/09/22 17:45:00", "2020/10/22 17:45:00"];
dates.forEach(i => {
    //Geri Sayım Kodu JS
var countDownDateTar = new Date(i).getTime(); //geri sayılacak ileri zamanki bir tarih
var dayText = "Gün";
var hourText = "Saat";
var minuteText = "Dakika";
var secondText = "Saniye";
if (countDownDateTar){ //tarih var ise
var x = setInterval(function() { //sayacı belirli aralıklarla yenile
var now = new Date().getTime(); //şimdiki zamanı al
var distance = countDownDateTar - now; //geri sayılacak tarih ile şimdiki tarih arasındaki zaman farkını al
if (distance < 0) { //zaman farkı yok ise belirtilen zamanı geçti
countDownDateTar = countDownDateTar + 7*24*60*60*1000; //Tanımlı tarihi 7 gün sonrası olarak ayarla (7günlük milisaniyeyi ekledik.)
}
else { //zaman farkı var ise
//aradaki zaman farkını gün,saat,dakika,saniye olarak böl
var days = Math.floor(distance / (1000 * 60 * 60 * 24)),
hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)),
minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60)),
seconds = Math.floor((distance % (1000 * 60)) / 1000),
days = (days?''+days+' '+dayText+'':''), //gun varsa gun degerini yaz
hours = (hours?''+hours+' '+hourText+'':''), //saat varsa saat degerini yaz
minutes = (minutes?''+minutes+' '+minuteText+'':''), //dakika varsa dakika degerini yaz
seconds = (seconds?''+seconds+' '+secondText+'':''); //saniye varsa saniye degerini yaz
//document.getElementById("countdown_timerTar").innerHTML = days + hours + minutes + seconds ; //yazdır
if (i == dates[0]) {
    document.getElementById("countdown_timerTar").innerHTML = (days + " " + hours + " " + minutes + " " + seconds)
}
if (i == dates[1]) {
    document.getElementById("countdown_timerTar2").innerHTML = (days + " " + hours + " " + minutes + " " + seconds)
}
if (i == dates[2]) {
    document.getElementById("countdown_timerTar3").innerHTML = (days + " " + hours + " " + minutes + " " + seconds)
}
}
}, 1000); //1 saniyede bir sayaç
}
});

HTML kısmına bunları "script" tagları arasına yapıştırırsınız, orayı biliyorsunuz zaten.
 
Son düzenleme:
Çözüm
Teşekkürler.
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…