2016-04-14 20 views
0
function get_stock_data(symbol, index) { 
    var url = "https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20(%22"+ symbol +"%22)&format=json&diagnostics=true&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback="; 
    $.getJSON(url, function(data) { 
     var price = $(".stock-price"); 
     price[index].innerHTML = ""; 
     price[index].appendChild(document.createTextNode(data.query.results.quote.Change)); 
     console.log(data); 
    }).success(function() { 
     console.log("success"); 
    }).fail(function() { 
     console.log("Failed"); 
    }); 
} 


$("document").ready(function() { 

    var symbol = $(".stock-symbol"); 

    for(var i = 0; i < symbol.length; i++) { 
     setInterval(get_stock_data(symbol[i].firstChild.textContent, i) , 1000); 
     console.log("hello"); 
    } 
}); 

bu senaryodaki sorunu .. get_stock_data fonksiyon plz veri DOM güncelleştirilmesi istiyorum ... yardım ... sadece bir kez çalışacağını Sen aradığınızjavascript jquery tekrarlayarak değil SetInterval

+0

Müfettişi kontrol ettiniz mi? Herhangi bir hata verdi mi? – MCMXCII

+1

Mimarinizle ilgili bir sorun var, senkronize olmayan eşzamanlı şeyler yapmaya çalışıyorsunuz ve yanlış ayarlanmış setInterval. Döngünün tamamı – MysterX

+1

'un üzerine yazılmalıdır. SetInterval'ın ilk argümanı bir işlev olmalıdır. – James

cevap

1

Böyle bir şey işe yaramalıdır.

function get_stock_data(symbol, index) { 
    var url = "https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20(%22" + symbol + "%22)&format=json&diagnostics=true&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback="; 
    $.getJSON(url, function (data) { 
     var price = $(".stock-price"); 
     price[index].innerHTML = ""; 
     price[index].appendChild(document.createTextNode(data.query.results.quote.Change)); 
     console.log(data); 
    }).success(function() { 
     console.log("success"); 
    }).fail(function() { 
     console.log("Failed"); 
    }); 
} 
function setUpInterval() { 
    var symbol = $(".stock-symbol"); 
    for (var i = 0; i < symbol.length; i++) { 
     setInterval("get_stock_data(" + symbol[i] + "," + i + ")", 1000); 
    } 
} 
setUpInterval();  
0

olduğunu setInterval numaralı telefondan get_stock_data numaralı telefonu arayın. Yani bir kez ve sadece bir kez çağrılır. Aslında get_stock_data hiçbir şey döndürmediğinden undefined değerini setInterval'a geçiriyorsunuz.

setInterval'un ilk argümanı, aramak istediğiniz işlev olmalıdır. Bu durumda, bazı geçti parametreleri ile get_stock_data aramak istediğiniz gibi görünüyor. setInterval ile bu işi yapmak için, böyle bir anonim işlevinde geçmesi gerekir:

for (var i = 0; i < symbol.length; i++) { 
    setInterval(function() { get_stock_data(symbol[i].firstChild.textContent, i); }, 1000); 
} 

Bu şekilde her 1000 (veya çok) arayacak setIntervalsetInterval e işlevinde geçiyoruz milisaniye.