Çö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:
Bende hepsi farklı, sorunu anlayamadım. 5 gün, 36 gün, 66 gün.
JavaScript:
if(i = 1) {
    console.log(days + " " + hours + " " + minutes + " " + seconds)
}
if(i = 2) {
    console.log(days + " " + hours + " " + minutes + " " + seconds)
}
if(i = 3) {
    console.log(days + " " + hours + " " + minutes + " " + seconds)
}


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

JavaScript:
if(i == 1) {
    console.log(days + " " + hours + " " + minutes + " " + seconds)
}
if(i == 2) {
    console.log(days + " " + hours + " " + minutes + " " + seconds)
}
if(i == 3) {
    console.log(days + " " + hours + " " + minutes + " " + seconds)
}

Pek anlamam bu arada JavaScript'den. Hatam varsa özür dilerim.
Teşekkürler cevabınız için, zaten pek JS bilgisi gerektirmiyor galiba bu sorunda. PC geçince deneyeceğim.
 
Bu şekilde mi geri sayım olmalı?

Ekran Alıntısı.PNG
 


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
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.
Teşekkürler.
 

Geri
Yukarı