If 和 Else 语句不适用于 API?

我有这个代码显示比特币价格和基础和其他东西,但我想让它在数据到达之前(我将 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>

和JS


const 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...`

}


慕村225694
浏览 80回答 1
1回答

撒科打诨

你有两个主要问题。逗号运算符并不像你想象的那样逗号运算符返回其右侧的所有内容。if (a,b)意思与 相同if (b)。如果您想测试num1.innerText.length > 0AND 相同的 fornum2等等,那么您必须测试它们的所有长度,并使用运算&&符而不是运算符,。尽管您可以做一个快捷方式,编写一个函数来对数组中的每个事物进行测试,然后测试它们是否都正常。if&nbsp;(![num1,&nbsp;num2,&nbsp;num3,&nbsp;num4,&nbsp;num5].some( &nbsp;&nbsp;&nbsp;&nbsp;element&nbsp;=>&nbsp;element.innerText.length&nbsp;===&nbsp;0 &nbsp;&nbsp;&nbsp;&nbsp;))&nbsp;{if声明不具有追溯力您在计划开始时测试您的状况。然后你开始进行间歇训练稍后,间隔会更改值,因此if语句将过去...但您不再运行该if语句。您对元素所做的更改不会及时返回到执行测试时的时间if。您需要在更改元素后进行该测试。然而这是没有意义的。您可以一次性设置所有值,并且您知道何时设置它们。您可以将其硬编码&nbsp;Waiting for Data to Arrive…到 HTML 中,然后在替换其他元素的Data Arrived同时将其替换为 。innerText
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript