Arama butonu
Bu konudaki kullanıcılar: 1 misafir
8
Cevap
818
Tıklama
0
Öne Çıkarma
Javascript sorusu
H
5 yıl
Yarbay
Konu Sahibi

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
5 yıl
Binbaşı

Settimeout kullanabilirsin.Sonsuz bir döngü kurup listeyi yazdır.



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

T
5 yıl
Yarbay

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
5 yıl
Yüzbaşı


<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
5 yıl
Yarbay
Konu Sahibi

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
5 yıl
Yüzbaşı

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
T
5 yıl
Yarbay

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 Tuğkan-0153 -- 5 Nisan 2020; 23:17:43 >

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


Bu mesajda bahsedilenler: @Hobar
H
5 yıl
Yarbay
Konu Sahibi

Ş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
5 yıl
Yüzbaşı

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.