Bu konudaki kullanıcılar: 2 misafir, 1 mobil kullanıcı
8
Cevap
0
Tıklama
0
Öne Çıkarma
Javascript sorusu

H Hobar Konu Sahibi
geçen yıl (10470 mesaj)
Elimde A,B,C şeklinde 3 elemanlı bir liste olduğunu farz edelim.

Bu listenin her bir elemanını 5 saniyede bir sırayla div in içinde göstermem gerekiyor. Bittğinde de başa dönüp sonsuza kadar tekrar edecek.

Çok zor gibi görünmüyor ama atladığım bir şey var ve yapmadım.




B BiletlerBiletxD
geçen yıl (941 mesaj)
Settimeout kullanabilirsin.Sonsuz bir döngü kurup listeyi yazdır.





< Bu ileti mobil sürüm kullanılarak atıldı >


V vonderplanitz
geçen yıl (6831 mesaj)
Javascript The Definitive Guide belgesinden aldığım işlev üzerine basit bir nesne yazarak:
< Resime gitmek için tıklayın >
kırmızı sarı mavi serisinin elemanlarını her saniyede bir bastırdım. Bu kodu HTML içinde div içeriğine uygulayabilirsin.





< Bu ileti mini sürüm kullanılarak atıldı >


R Revolution
geçen yıl (329 mesaj)

<div id="loop"></div>
<script>
var liste = ["Elma", "Armut", "Portakal"];
var div = document.querySelector("#loop");
var i = 0;

div.innerHTML = liste[0];

setInterval(function() {
div.innerHTML = liste[++i % liste.length];
}, 1000);
</script>


Edit: Ben süreyi 1 saniye olarak ayarladım daha hızlı gör diye. Sen 5000ms olarak ayarla orayı.





< Bu mesaj bu kişi tarafından değiştirildi Revolution -- 5 Nisan 2020; 16:36:14 >
Bu mesaja 1 cevap geldi.

H Hobar Konu Sahibi
geçen yıl (10470 mesaj)
Teşekkürler. İşimi gördü bu. div.innerHTML = liste[0]; Burada parantez içine neden i değil de 0 yazdığınızı anlamadım yalnız.

@vonderplanitz
Sizinki biraz karışık geldi. Pek anlamadım açıkçası.


Bu mesaja 2 cevap geldi.

Bu mesajda bahsedilenler: @vonderplanitz , @Revolution

R Revolution
geçen yıl (329 mesaj)
Farketmez i de olur. Başlangıçta i değeri 0 zaten. Sadece sayfa açılırken ilk elamanı göstersin diye ekledim onu.


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @Hobar

V vonderplanitz
geçen yıl (6831 mesaj)
benim koddaki invoke fonksiyonu her amaca uysun diye geniş yazıldığı için biraz karışık yoksa Revolution'un yazdığı stilde olması gerekli. ayrıca (elma armut karpuz) serisinin endeksini hafızada tutması için nesne oluşturdum, kod daha da uzadı. Revolution 'un kod o işlemi de daha kısa çözüyor.





< Bu mesaj bu kişi tarafından değiştirildi vonderplanitz -- 5 Nisan 2020; 23:17:43 >


Bu mesajda bahsedilenler: @Hobar

H Hobar Konu Sahibi
geçen yıl (10470 mesaj)
Şu an tam olarak istediğim gibi çalışıyor ama kodu biraz daha düzgün yapabilmek için kullandığım iki listeyi iki boyutlu tek listede push etmek istedim olmuyor. list.push(["@d.Title"],"@d.Target"]); şeklinde yaptığımda ard arda ekliyor. Bunu da yapabilir miyiz?

Mevcut kod böyle.
< Resime gitmek için tıklayın >





< Bu mesaj bu kişi tarafından değiştirildi Hobar -- 6 Nisan 2020; 12:42:30 >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @Revolution

R Revolution
geçen yıl (329 mesaj)
Direkt list dizisi olsun sadece

list.push(["@d.Title", "@d.Target"]);

şeklinde yazarsan dizi iki boyutlu olur.

list[++i % list.length][0];
list[i % list.length][1];

şeklinde erişebilirsin yazdırmak için de.

list.push(["@d.Title"],"@d.Target"); Bu şekilde yaparsan push metodu ard arda ekler. Hatta bir array bir string türünde ekler saçma bir şey olur. Yukarıdaki gibi yapman lazım.





< Bu mesaj bu kişi tarafından değiştirildi Revolution -- 6 Nisan 2020; 22:36:23 >


Bu mesajda bahsedilenler: @Hobar
DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.