v2.5.2
Giriş yap

ilk fonksiyon

ferid244
435 defa görüntülendi

merhaba hocam soyle bir sorum var kodlar uzun oldugu icin websitem uzerinden gostermeye karar verdim https://isqur.com/index.php?sikayetteklif burada kullanicilarin yazdigi mesajlar bir txt dosyasinin icerisine yaziliyor ve safyanin scrolu tam asagidayken fetch ile txt dosyasinda veriler setinterval seklinde cekiliyor sayfayi yukariya kaldirdigim zaman ise clear interval fonksiyonu calisiyor ve fetch duruyor ilk sayfa acildiginda kod calisiyor ama bir tane mesaj gonderdikten sonra fonksiyon bir daha calismiyor yeniden bilgisayarla f5 tusuna basmam gerekiyor ki scroll fonksiyonu yeni calissin ben bu isi cozemedim lutfen yardim ederseniz sevinirim

munzevi
866 gün önce

soruyu anladığım kadarıyla, kodları bulmaya çalıştım. bazı değişkenlerde eksik vardı, test ederek kendim tamamladım. en temel sorun. scrolun insmesini sağlayan anonim fonksiyonun koşul içersine yazılmasından kaynaklanıyor, dolayısıyla else durumda tanımsız göründüğünden çalışmıyor. çalışan yöntemi daha kısa olarak düzenleyip yazdım.
benim kodum

    window.onscroll = function(ev) {
        var silinterval = setInterval(() => {
            fetch("https://localhost/data.txt").then(async response => {
                var data = await response.text();
                 document.querySelector('#mesajlar').innerHTML = data;
                window.scrollTo(0, document.body.scrollHeight);
            });
        }, 2000);
        (window.innerHeight + window.scrollY) >= document.body.scrollHeight ?
            silinterval : clearInterval(silinterval);
    };

senin kodun ve hatanın sebep olduğu nokta yorum satırı olarak işaretli;

    window.onscroll = function(ev) {
        if ((window.innerHeight + window.scrollY) >= document.body.scrollHeight) {
            /*
            silinterval = setInterval(() => {
                fetch("sikayet.txt").then(function(response) {
                    return response.text();
                }).then(function(data) {
                    mesajlar.innerHTML = data
                    window.scrollTo(0, document.body.scrollHeight);
                })
            }, 2000);
            */
        } else {
            clearInterval(silinterval);
        }
    };

kendi kodundan devam etmek istersen düzenlemen gereken, tanımlamayı koşuldan önce yazmak;

    window.onscroll = function(ev) {
    var silinterval = setInterval(() => {
                fetch("sikayet.txt").then(function(response) {
                    return response.text();
                }).then(function(data) {
                    mesajlar.innerHTML = data
                    window.scrollTo(0, document.body.scrollHeight);
                })
            }, 2000);
        if ((window.innerHeight + window.scrollY) >= document.body.scrollHeight) {
            silinterval;
        } else {
            clearInterval(silinterval);
        }
    };