我有这个代码显示比特币价格和基础和其他东西,但我想让它在数据到达之前(我将 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 > 0
AND 相同的 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
添加回答
举报
0/150
提交
取消