Javascript Loop
-
Hocalar merhaba, sitede gif1 divinin içinde figure ve a nın altındaki img ın çok kısa zaman aralıklarında src sini değiştirmek istiyorum sonsuz döngüye sokup, aşağıdaki şekilde yaptım ama yemedi var mı önerisi olan?
jquery(document).ready(function( $ ){ function foo() { $('.gif1 > figure > a > img').attr('src', 'https://upload.wikimedia.org/wikipedia/commons/thumb/a/a5/Instagram_icon.png/599px-Instagram_icon.png'); setTimeout(boo, 100); } function boo() { $('.gif1 > figure > a > img').attr('src', 'https://upload.wikimedia.org/wikipedia/commons/thumb/c/c2/F_icon.svg/267px-F_icon.svg.png'); setTimeout(foo, 100); } });
-
.gif1 figure a img şeklinde dener misin
-
yunusemre bunu yazdı
.gif1 figure a img şeklinde dener misin
hocam loop mantığını yanlış kuruyorum fooya girip ilk src yi değiştiriyor ama sonrası çalışmıyor
-
Bir array oluştur içinde linkler olsun.
Sonra bir fonksiyon oluştur. Her çağrıldığında (0 default olmak üzere) arraydaki girdileri okusun. (Her çağrıldığında tek işlem) ve değişiklik yapmak istediğin resmi bu arraydaki linke göre değiştirsin.
Son olarak setInterval kullanarak bu fonksiyonu çağır. Array bitince stoplamasını da ister stop interval ile ayarla ister fonksiyonu boş döndür.
Bir teşekkürü esirgemeyin +Rep verin forumu yaşatan yorumdur
-
Flood gibi olmasın ama yukarıdaki mesajla karışmaması için yazmak istedim.
Js betik dil olduğu için baştan sırayla satır satır okunup devam eden bir hede değil.
Bir For içine set timeout koysanız beklentiniz olan "sıra sıra birbirini bekleyen gecikmeler" olayını alamazsınız. İşin Garibi hepsi aynı anda da çalışmaz. Tarayıcının (veya js çalıştıran hedenin) kaynak tüketimine bağlı olarak ufak milisaniyelik farklarla işlemler yapılır. Genelde hepsinin aynı anda işlem yaptığını doğal olarak yalnızca ilkinin veya sondakinin çalıştığını gözlemleriz.
Bu yüzden tıpkı hook mantığıyla fonksiyondan fonksiyona kancalayarak işlemler yapılmalı.
İşbu postun akademik hiçbir değeri yoktur.
-
$(function(){ var elements = $('.gif1').find('figure').find('a').find('img'); //Yapıyı tam bilemediğim için böyle yazdım $.each(elements,function(i,e){ $(e).attr('src', 'https://upload.wikimedia.org/wikipedia/commons/thumb/a/a5/Instagram_icon.png/599px-Instagram_icon.png'); }) });
dener misin? işini görecek mi ? olmaz da yardımcı olurum
Shuqufe tarafından 15/May/18 12:02 tarihinde düzenlenmiştir -
https://jsfiddle.net/7Lofxn7d/
Ama tercih edilen birşey değil bu. Doğrudan gif kullansan daha faydalı.
@by_Tet 'in dediği, böyle birşey galiba;
$(function() { setInterval(function() { runMe(); }, 1000); }); var current = 0; function runMe() { var arrayImg = [ 'https://upload.wikimedia.org/wikipedia/commons/thumb/c/c2/F_icon.svg/267px-F_icon.svg.png', 'https://upload.wikimedia.org/wikipedia/commons/thumb/a/a5/Instagram_icon.png/599px-Instagram_icon.png' ]; $('img').attr('src', arrayImg[current]); current = current == arrayImg.length-1 ? 0 : current + 1; }
Çoklu yapacaksan bunu kullanabilirsin. Ama bunun sapıtma olasılığı çok fazla asenkron olduğu için, özellikle 100 ms de deniyorsan hayır gelmeyebilir.
manyaki tarafından 15/May/18 14:25 tarihinde düzenlenmiştir -
manyaki bunu yazdı
https://jsfiddle.net/7Lofxn7d/
Ama tercih edilen birşey değil bu. Doğrudan gif kullansan daha faydalı.
@by_Tet 'in dediği, böyle birşey galiba;
$(function() { setInterval(function() { runMe(); }, 1000); }); var current = 0; function runMe() { var arrayImg = [ 'https://upload.wikimedia.org/wikipedia/commons/thumb/c/c2/F_icon.svg/267px-F_icon.svg.png', 'https://upload.wikimedia.org/wikipedia/commons/thumb/a/a5/Instagram_icon.png/599px-Instagram_icon.png' ]; $('img').attr('src', arrayImg[current]); current = current == arrayImg.length-1 ? 0 : current + 1; }
Çoklu yapacaksan bunu kullanabilirsin. Ama bunun sapıtma olasılığı çok fazla asenkron olduğu için, özellikle 100 ms de deniyorsan hayır gelmeyebilir.
Aynen böyle hocam eline sağlık. Telefondayım yazamıyorum.
Sapıtma olasılığı dediğin gibi fakat yükleme durumu olduğundan 100 MS her türlü sıkıntı olacaktır.
Gif yapılabilir dediğin gibi en mantıklısı olur.
Ama illaki fotolar üstünden olacaksa yazdığın kodu biraz değiştirebiliriz, şöyle ki fotoların hepsini koyarız display:none yaparız. İnterval fonksiyonunda da sırayla show() yapıp diğerlerini hide() yaparız. Bu da tasarımda kaymaya sebep olabilir.
Gif güzel fikir ya