【发布时间】:2021-03-28 11:55:54
【问题描述】:
我正在尝试构建一个计算器,您可以在其中选择不同的加密货币并构建一个用于测试和跟踪的投资组合。为此,我选择 Coingecko API v3 并使用 Fetch 进行 API 调用。 https://www.coingecko.com/en/api
API 调用正常工作,我从服务器获取 JSON 数据。我构建了一个传递前 100 名硬币的函数,将它们放入 Datalist-Tag 中以便从输入中进行选择:
function fetch_coinlist(url) {
fetch(url)
.then(function(response) {
if (response.status !== 200) {
alert("Can Not get Price Api! Status: " + response.status);
return;
}
response.json().then(function(data) {
document.getElementById("coinlist").innerHTML = "";
for (i = 0; i <= 99; i++) {
const toplist = document.createElement("option");
toplist.id = data[i].symbol;
toplist.innerHTML =
data[i].symbol.toUpperCase() + " - " + data[i].name;
document.getElementById("coinlisting").appendChild(toplist);
//console.log(data[i].id);
//console.log(data[i].name);
//console.log(data[i].symbol);
//console.log(data[i].image);
//console.log(data[i].current_price);
}
});
})
.catch(function(err) {
alert("Can Not get Price Api! Status: " + err);
});
}
<input list="coinlisting" id="coinlist" name="coinlist" class="curser-choose" />
<datalist id="coinlisting" placeholder="Choose Coin"></datalist>
这是有效的,我正在使用 For 循环来处理响应。如果用户从该 Datalist 中选择了一个选项,我会尝试显示硬币的价格,为了获得更多功能,我认为最好调用像 data.coinname.current_price 这样的对象,这样我就可以构建一个可以传递字符串的函数到它那里并得到那个硬币的价格。
但是,现在我必须将 data[0].current_price 用于列表中第一项的current Price。被调用列表上的项目会随着时间而改变,所以我不能进行静态分配,我想我每次调用 API 时都可以这样做,但是拥有一个可以用名称提供的函数对我的目标没有好处作为一个字符串来进行价格调用。
可以在与列表相同的调用中获得价格,但我无法弄清楚我将如何做到我的想法。在 API 的网站上列出了不同的调用,第一个是 /coins/list 调用,它说“使用它来获取所有硬币的 id 以进行 API 调用”并为每个可用的 JSON 对象硬币之类的:
{
"id": "1inch",
"symbol": "1inch",
"name": "1inch"
}
我是否需要先进行此调用才能实现我的想法?但我不确定这将如何帮助我获得我正在寻找的解决方案......我正在努力寻找解决方案并感到困惑,我觉得我没有正确理解它,它应该不那么难我认为现在是这样:D 如果您知道如何完成此操作,请告诉我!
【问题讨论】:
-
这跟CSS有什么关系?请不要添加不必要的标签。
-
让人们回答你的问题。尝试像这样简化:我有这个问题。我试过这个。错误就是这样。添加如下内容:“我为此选择 Coingecko API v3 并使用 Fetch 进行 Api 调用。coingecko.com/en/api”它会产生一个臃肿的未回答问题
-
您的代码没有运行。你需要
url="https://api.coingecko.com/api/v3/coins/list"; -
嗨,对不起,这是我的第一篇文章,我在这个项目中使用了 CSS,所以我将它添加到其中,API Url 已传递给函数,因此我可以将它与按钮一起用于调试。感谢您的提示!
标签: javascript coingecko