Goodmorning everyone,
我目前在使用jQuery代码时遇到了一些问题。 我正在尝试使用cryptokickoff处的CoinMarketCap API在我的网站上显示加密货币的统计数据。我知道如何显示它们,但是附加到我的列不能正常工作。
我想做的事情: - 我给出了一个数组,其中包含了我想要从API中显示的加密内容 - 我想将每个加密附加到一行,从0开始(var i)并且每个加密都加一行
现在发生的事情是所有的加密都被放入id crypto-3的行中,我不知道这是怎么回事。
任何帮助都将受到高度赞赏!
function fillGrid() {
var cryptos = ["bitcoin","ethereum","ripple"];
var i = 0;
jQuery(cryptos).each(function(){
jQuery.get( "https://api.coinmarketcap.com/v1/ticker/"+cryptos[i]+"/", function( data ) {
jQuery("#crypto-"+i).append(
data[0].name);
});
i++;
})
};

<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.3/css/bootstrap.min.css" integrity="sha384-Zug+QiDoJOrZ5t4lssLdxGhVrurbmBWopoEl+M6BdEfwnCJZtKxi1KgxUyJq13dy" crossorigin="anonymous">
<script src="http://code.jquery.com/jquery-latest.min.js"
type="text/javascript"></script>
<script src="api.js" type="text/javascript"></script>
</head>
<body>
<div class="container-fluid">
<div class="row">
<div class="col-sm-12 col-md-6 col-lg-4" id="crypto-0">
</div>
<div class="col-sm-12 col-md-6 col-lg-4" id="crypto-1">
</div>
<div class="col-sm-12 col-md-6 col-lg-4" id="crypto-2">
</div>
</div>
<div class="row">
<div class="col-sm-12 col-md-6 col-lg-4" id="crypto-3">
</div>
<div class="col-sm-12 col-md-6 col-lg-4" id="crypto-4">
</div>
<div class="col-sm-12 col-md-6 col-lg-4" id="crypto-5">
</div>
</div>
</div>
<script type="text/javascript">
fillGrid();
</script>
</body>
</html>
&#13;
答案 0 :(得分:0)
jQuery&#39; s .each
通常用于迭代jQuery对象的成员(例如,如果我选择jQuery("[id^=crypto")
,我会使用.each
来迭代这些对象)。使用vanilla JS forEach
循环代替迭代会更快。
这会在包含el
的函数的调用堆栈中维护i
和.get
的值,因此在触发回调之前迭代器不会被更改。
function fillGrid() {
var cryptos = ["bitcoin","ethereum","ripple"];
cryptos.forEach(function(el, i)
{
jQuery.get("https://api.coinmarketcap.com/v1/ticker/" + el + "/", function(data)
{
jQuery("#crypto-" + i).append(data[0].name);
}
);
});
};