2016-04-01 23 views
0

Bir API'den JSONP formatında stok verileri talep ediyorum. 37 indeks 0 dan iterate ve yeniden 19 indeks 0 dan: yanıt nasıl tekrar tekrar bu 58 toplam tekrarlamalar için, yani iterasyon bir dizi numarası ile dizi, yineleme uzunluğu 38, belirli yineleme sayısıyla tekrarlı olarak yinelemek ister misiniz?

ile bir dizi?

(Pratik, ben gibi stok isimleri yatay hattı inşa etmek istiyorum. Bir kere bütün 38 hisse isimlerini yazdırarak ve bir kez daha ilk 20 hisse senedi adlarını ekleme)

aşağıda kodumu bakınız. Teşekkürler! gibi

<!DOCTYPE html> 
<html> 
<head> 
<style type='text/css'> 
#gse-wrapper {overflow: hidden;} 
.stocks {display: inline-block; width: 120px; text-align: center;} 
#gse {animation-name: slide; animation-duration: 90s; animation-iteration-count: infinite; animation-timing-function: linear; white-space: nowrap;} 
@keyframes slide {from {margin-left: 0px;} to {margin-left: -4560px;}} 
</style> 
</head> 
<body> 
<div id='gse-wrapper'><span id='gse'></span></div> 
<script src='https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script> 
<script type='text/javascript'> 

$(document).ready(function() { 
$.getJSON("http://dev.kwayisi.org/apis/gse/live?callback=?", function (data) { // API request for stock data 
console.log(data); 
$.each(data, function (i, value) { // iterating JSON array 
$("#gse").append("<div class='stocks'>" + value.name + "</div>"); 
}); 
}); 
}); 

</script> 
</body> 
</html> 
+3

"For döngüsü" ile ilgili sorun nedir? – Rayon

cevap

0
$.getJSON("http://dev.kwayisi.org/apis/gse/live?callback=?", function (data) { 
    var data_slice = function(data, start, end) { 
     var slice = data.slice(start, end); 
     $.each(data, function (i, value) { // iterating JSON array 
      $("#gse").append("<div class='stocks'>" + value.name + "</div>"); 
     }); 
    } 
    data_slice(data, 0, 38); 
    data_slice(data, 0, 20); 
}); 
kullanmak, JavaScript için json dizi dönüştürmek için
+0

İlk düzenlemeniz işe yaradı mı, bunun için yeni ne var? – chiefr

+0

Sadece bir "data_slice" işlevi yaptım, böylece "$ .each" döngüsünü iki kez yazmanız gerekmeyecekti. – firasd

+0

Teşekkürler, iyi çalışıyor! – chiefr

0

Kullanım şey:

var i; 
    for (i = 0; i < 37; i++) { 
     // do something with myArray[i] 
    } 
    for (i = 0; i < 19; i++) { 
     // do something with myArray[i] 
    } 
+0

Sipariş doğruysa, tek bir döngüde bunu bir modulo kullanarak yapabilirdiniz: 'for (i = 0; i <58; i ++) {// myArray ile bir şeyler yap [i% 38]}' –

0

Kullanım for-loop ve tek for-loop

$(document).ready(function() { 
 
    $.getJSON("http://dev.kwayisi.org/apis/gse/live?callback=?", function(data) { 
 
    for (var i = 0; i < 37; i++) { 
 
     $("#gse").append("<div class='stocks'>" + data[i].name + "</div>"); 
 
    } 
 
    $("#gse").append("<hr>"); 
 
    for (var i = 0; i < 20; i++) { 
 
     $("#gse").append("<div class='stocks'>" + data[i].name + "</div>"); 
 
    } 
 
    }); 
 
});
#gse-wrapper { 
 
    overflow: hidden; 
 
} 
 
.stocks { 
 
    display: inline-block; 
 
    width: 120px; 
 
    text-align: center; 
 
} 
 
#gse { 
 
    animation-name: slide; 
 
    animation-duration: 90s; 
 
    animation-iteration-count: infinite; 
 
    animation-timing-function: linear; 
 
    white-space: nowrap; 
 
} 
 
@keyframes slide { 
 
    from { 
 
    margin-left: 0px; 
 
    } 
 
    to { 
 
    margin-left: -4560px; 
 
    } 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
 
<div id='gse-wrapper'><span id='gse'></span> 
 
</div>

içinde length veya durumun söz
0

İstenilen maksimum yineleme sayısı için bir dış değişkene sahip bir döngü kullanmayı deneyin ve yineleyin kaç kez yinelendiğinizin kaydını tutmak için başka bir değişkeni . İlk döngüyü bitirip bitirmediğinizi, tekrar başlamanızı ve maksimum sayacınızı çektiğinizde sona erdirmek için for döngüsü içindeki kontrolleri birleştirin. Örneğin;

var max = 58 // Your desired looping amount 
var current = 0; 

for(var y = 0; y < max; y++){ 
    // Logic Here - data[y]; 

    if(y >= data.length){ 
    y = 0; 
    } 

    if(current == max){break;} 

    current++; 
} 
+0

Teşekkürler. Çözümün işe yaramazdım. konsol bana x'in tanımlanmadığını bildiriyor – chiefr

+0

Kötüyüm, bu çözüm oluşturulurken bir hataydı. 'Max' için' x' değiştir ' – Lewis

0

Sen javascript döngü ve modülo operatör% için kullanmalıdır. Bu çözüm javascript dizisi ile birlikte javascript'te. l Dizinizdeki uzunluğudur ve n iterasyon tercih sayısı ise böyle bir şey kullanabilirsiniz,

var array = JSON.parse(jsonArray); 

:

for (x = 0; x < n; x++){ 
    array[x%l] // this is the element you can do stuff with 
} 
+0

Ama '$ .getJSON' ...? – Rayon

İlgili konular