javascript - 在输入字段中输入时,以太坊到美元/其他货币
问题描述
我不太擅长 JS,我一直在与这段代码作斗争,当我在输入字段中键入值时,它应该让我将以太坊转换为选定的货币,它什么也不做,当我调试它时,它似乎一直返回 NaN错误:
The specified value "NaN" is not a valid number. The value must match to the following regular expression: -?(\d+|\d+\.\d+|\.\d+)([eE][-+]?\d+)?
以下是我的代码,非常感谢您的帮助。
代码:
$(".currencyField").keyup(function(){ //input[name='calc']
let convFrom;
if($(this).prop("name") == "eth") {
convFrom = "eth";
convTo = "usd";
}
else {
convFrom = "usd";
convTo = "eth";
}
$.getJSON( "https://api.coingecko.com/api/v3/coins/markets?vs_currency=usd&ids=ethereum",
function( data) {
var origAmount = parseFloat($("input[name='" + convFrom + "']").val());
var exchangeRate = parseInt(data.current_price);
let amount;
if(convFrom == "eth")
amount = parseFloat(origAmount * exchangeRate);
else
amount = parseFloat(origAmount/ exchangeRate);
$("input[name='" + convTo + "']").val(amount.toFixed(2));
price.innerHTML = amount
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="number" name="eth" class="currencyField" placeholder="ETH">
<div class="arrow" style="margin: 0 10px";>=</div>
<input type="number" name="usd" class="currencyField" placeholder="USD">
</div><span id="price"></span>
解决方案
如果您查看 api 的响应,它看起来像返回一个数组。所以要访问current_price
你需要引用数组的索引:
var exchangeRate = parseInt(data[0].current_price);
完整代码如下:
$(".currencyField").keyup(function(){ //input[name='calc']
let convFrom;
if($(this).prop("name") == "eth") {
convFrom = "eth";
convTo = "usd";
}
else {
convFrom = "usd";
convTo = "eth";
}
$.getJSON( "https://api.coingecko.com/api/v3/coins/markets?vs_currency=usd&ids=ethereum",
function( data) {
var origAmount = parseFloat($("input[name='" + convFrom + "']").val());
var exchangeRate = parseInt(data[0].current_price);
let amount;
if(convFrom == "eth")
amount = parseFloat(origAmount * exchangeRate);
else
amount = parseFloat(origAmount/ exchangeRate);
$("input[name='" + convTo + "']").val(amount.toFixed(2));
price.innerHTML = amount
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="number" name="eth" class="currencyField" placeholder="ETH">
<div class="arrow" style="margin: 0 10px";>=</div>
<input type="number" name="usd" class="currencyField" placeholder="USD">
</div><span id="price"></span>
推荐阅读
- c++ - 工作线程在执行太快后永久休眠
- express - 重型 API 端点 Heroku 超时
- javascript - `div` 是否可以像 HTML 锚标记一样工作?
- python - AWS Lambda(python):传递文件路径列表并将每个文件作为单独的 lambda 执行
- python - 使用 groupby 后如何对值进行排序并选择最频繁的一个?
- javascript - 打开博主第二页出现问题
- vba - 更新 excel VBA 以选择在工作簿中重命名选项卡的范围
- node.js - 如何在没有升帆的情况下对 Sails.JS Waterline 动作进行单元测试
- python - 关于Python函数在偶数位置大写字母的问题
- python - 想要带有 read_csv 的行和列的 MultiIndex