为了账号安全,请及时绑定邮箱和手机立即绑定

If 和 Else 语句不适用于 API?

If 和 Else 语句不适用于 API?

慕村225694 2023-09-07 14:35:01
我有这个代码显示比特币价格和基础和其他东西,但我想让它在数据到达之前(我将 setInterval 设置为 3 秒)它显示“等待数据到达...”并在之后它到达时显示“数据已到达!” (PS:我正在使用 Axios 库)这是我的 HTML 和 JS HTML<!DOCTYPE html><html><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>JSON Test</title>    <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script></head><body>    <h1 id="num"></h1>    <h1 id="num1"></h1>    <h1 id="num2"></h1>    <h1 id="num3"></h1>    <h1 id="num4"></h1>    <h1 id="num5"></h1>    <script src="zoom.js"></script></body></html>和JSconst num1 = document.getElementById("num1");const num2 = document.getElementById("num2");const num3 = document.getElementById("num3");const num4 = document.getElementById("num4");const num5 = document.getElementById("num5");const num = document.getElementById("num");if(num1,num2,num3,num4,num5.innerText.length > 0) {    num.innerText = `Data Arrived!`} else {    num.innerText = `Waiting for Data to Arrive...`}setInterval(() => {    const bitcoin = axios.get('https://api.cryptonator.com/api/ticker/btc-usd')    .then(res => {        num1.innerText = `${"Current Base"}, ${res.data.ticker.base}`         num2.innerText = `${"Current Currency"}, ${res.data.ticker.target}`        num3.innerText = `${"Current Bitcoin Price"}, ${res.data.ticker.price}`         num4.innerText = `${"Current Volume"}, ${res.data.ticker.volume}`         num5.innerText = `${"Current Change"}, ${res.data.ticker.change}`})     .catch(err => {        num1.innerHTML = `<strong>ERROR: Nothing found!<strong>`        num2.style.opacity = 0;        num3.style.opacity = 0;        num4.style.opacity = 0;        num5.style.opacity = 0;    })}, 5000);这是我尝试过的方法,还是我的 If 和 Else 语句的语法有问题?if(num1,num2,num3,num4,num5.innerText.length > 0) {    num.innerText = `Data Arrived!`} else {    num.innerText = `Waiting for Data to Arrive...`}
查看完整描述

1 回答

?
撒科打诨

TA贡献1934条经验 获得超2个赞

你有两个主要问题。

逗号运算符并不像你想象的那样

逗号运算符返回其右侧的所有内容。if (a,b)意思与 相同if (b)

如果您想测试num1.innerText.length > 0AND 相同的 fornum2等等,那么您必须测试它们的所有长度,并使用运算&&符而不是运算符,

尽管您可以做一个快捷方式,编写一个函数来对数组中的每个事物进行测试,然后测试它们是否都正常。

if (![num1, num2, num3, num4, num5].some(
    element => element.innerText.length === 0
    )) {

if声明不具有追溯力

您在计划开始时测试您的状况。

然后你开始进行间歇训练

稍后,间隔会更改值,因此if语句将过去

...但您不再运行该if语句。

您对元素所做的更改不会及时返回到执行测试时的时间if

您需要在更改元素后进行该测试。

然而这是没有意义的。您可以一次性设置所有值,并且您知道何时设置它们。

您可以将其硬编码 Waiting for Data to Arrive…到 HTML 中,然后在替换其他元素的Data Arrived同时将其替换为 。innerText


查看完整回答
反对 回复 2023-09-07
  • 1 回答
  • 0 关注
  • 79 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信