javascript - 获取 JSON 数据并在函数中显示为变量
问题描述
我试图通过 json url 通过 bitpay api 获取 btc_to_usd 值实际上是我想要实现的
这是需要手动输入 6277.51(btc 到 usd 值)和 2636554.2(btc 到 naira 值)的工作脚本
<script >
//var btc_to_usd =;
//var btc_to_ngn = ;
//var usd_to_ngn = ;
var btc = document.getElementById("btc");
var usd = document.getElementById("usd");
var ngn = document.getElementById("ngn");
function changeBtc() {
// usdValue = (btc.value * btc_to_usd);
// ngnValue = (btc.value * btc_to_ngn);
usd.value = correctionDecimalsbtc(btc.value * 6277.51);
ngn.value = correctionDecimalsbtc(btc.value * 2636554.2);
}
function changeUsd() {
btc.value = correctionDecimalsbtc(usd.value / 6277.51);
ngn.value = correctionDecimalsbtc(usd.value * 420);
}
function changeNgn() {
btc.value = correctionDecimalsbtc(ngn.value / 2636554.2);
usd.value = correctionDecimalsbtc(ngn.value / 420);
}
function correctionDecimalsbtc(value) {
if(countDecimals(value) > 8) return value.toFixed(8);
return value;
}
function countDecimals(value) {
if(Math.floor(value) === value) {
return 0;
} else {
if (undefined !== value.toString().split(".")[1]) {
return value.toString().split(".")[1].length;
} else {
return 10;
}
}
}
</script>
这是我试图通过 json url 获取 btc_usd 值的非工作脚本
<script >
//var btc_to_usd = $url='https://bitpay.com/api/rates';
$json=json_decode( file_get_contents( $url ) );
$naira=$btc=0;
//var btc_to_ngn = (btc_to_usd * 420);
//var usd_to_ngn = ;
var btc = document.getElementById("btc");
var usd = document.getElementById("usd");
var ngn = document.getElementById("ngn");
function changeBtc() {
// usdValue = (btc.value * btc_to_usd);
// ngnValue = (btc.value * btc_to_ngn);
usd.value = correctionDecimalsbtc(btc.value * 6277.51);
ngn.value = correctionDecimalsbtc(btc.value * 2636554.2);
}
function changeUsd() {
btc.value = correctionDecimalsbtc(usd.value / 6277.51);
ngn.value = correctionDecimalsbtc(usd.value * 420);
}
function changeNgn() {
btc.value = correctionDecimalsbtc(ngn.value / 2636554.2);
usd.value = correctionDecimalsbtc(ngn.value / 420);
}
function correctionDecimalsbtc(value) {
if(countDecimals(value) > 8) return value.toFixed(8);
return value;
}
function countDecimals(value) {
if(Math.floor(value) === value) {
return 0;
} else {
if (undefined !== value.toString().split(".")[1]) {
return value.toString().split(".")[1].length;
} else {
return 10;
}
}
}
</script>
请帮忙,我已经搜索并经历了很多解决方案和教程,但没有运气。
解决方案
您可以简单地使用Fetch API,如下所示:
var btc = document.getElementById("btc");
var usd = document.getElementById("usd");
var ngn = document.getElementById("ngn");
(async () => {
let data = await (await fetch("https://bitpay.com/api/rates")).json();
usd.textContent = data[2].rate
})();
function changeBtc() {
// usdValue = (btc.value * btc_to_usd);
// ngnValue = (btc.value * btc_to_ngn);
usd.value = correctionDecimalsbtc(btc.value * 6277.51);
ngn.value = correctionDecimalsbtc(btc.value * 2636554.2);
}
// [...]
推荐阅读
- charts - 带领导线的 BillboardJS 或 C3JS 饼图标签
- javascript - 为什么我在使用 async.parallel 和 async.forEach 获取数据时将重复值写入数据库?
- python - unicodedata.normalize 方法的不同行为
- ios - ExpoKit:更新到 SDK 29 后出现“pod update”错误
- scala - Scala 中的奇怪行为: private[packageName] class A(val s:Int) 隐藏了类型 A 但 s 仍然可以从另一个包访问,为什么?
- mysql - MySQL 中带有 ORDER BY 子句的累积和
- sql-server - 相对于 SQL Server 中的另一列运行总计
- javascript - 如何在ckeditor中将图像上传到亚马逊s3
- android - 颜色状态列表“事件”未触发或处理
- javascript - 带有嵌套依赖 Promise 调用的异步等待