Javascript 能否在数组中使用document.querySelector(“abc”)?
我的问题是出现“TypeError:无法在updatePrice处将属性'innerText'设置为null”错误。我想知道我的问题是否在选择器数组中?如果是的话,有没有办法实现我想要实现的目标Javascript 能否在数组中使用document.querySelector(“abc”)?,javascript,html,dom,Javascript,Html,Dom,我的问题是出现“TypeError:无法在updatePrice处将属性'innerText'设置为null”错误。我想知道我的问题是否在选择器数组中?如果是的话,有没有办法实现我想要实现的目标 var currency = "CAD"; var coins = [document.querySelector("#btc"), document.querySelector("#eth"), document.querySelector("#eos"
var currency = "CAD";
var coins = [document.querySelector("#btc"),
document.querySelector("#eth"),
document.querySelector("#eos"),
document.querySelector("#lite")];
var urls = ["https://min-api.cryptocompare.com/data/price?fsym=BTC&tsyms=CAD",
"https://min-api.cryptocompare.com/data/price?fsym=ETH&tsyms=CAD",
"https://min-api.cryptocompare.com/data/price?fsym=EOS&tsyms=CAD",
"https://min-api.cryptocompare.com/data/price?fsym=LITE&tsyms=CAD"];
window.onload = function loadPrices() {
setInterval(function() {
for(var i = 0; i < 4; i++){
fetch(urls[i])
.then(handleErrors)
.then(parseJSON)
.then(updatePrice, i)
.catch(displayErrors);
}
}, 5000);
}
function parseJSON(res) {
return res.json().then(function(parsedData){
console.log(parsedData[currency]);
return parsedData[currency];
})
}
function updatePrice(data, i){
console.log(coins[i]);
coins[i].innerText = data;
}
function handleErrors(res){
if(!res.ok){
throw Error(res.status);
}
return res;
}
function displayErrors(err){
console.log(err);
}
在获取标签之前,标签必须存在
var coins;
window.onload = function loadPrices() {
coins = [document.querySelector("#btc"),
document.querySelector("#eth"),
document.querySelector("#eos"),
document.querySelector("#lite")];
您应该在for循环和中使用
let
而不是var
此外,您的updatePrice
函数未正确传递i
变量,因此coins[i]
未定义。一个非常简单的修复方法是传入一个调用另一个函数的函数。因此,改变:
。然后(updatePrice,i)
到
。然后((数据)=>updatePrice(数据,i))
查看函数的工作方式也可能有用
var currency=“CAD”;
var coins=[document.querySelector(#btc”),
文件查询选择器(“eth”),
文档查询选择器(“eos”),
document.querySelector(“#lite”)];
变量URL=[”https://min-api.cryptocompare.com/data/price?fsym=BTC&tsyms=CAD",
"https://min-api.cryptocompare.com/data/price?fsym=ETH&tsyms=CAD",
"https://min-api.cryptocompare.com/data/price?fsym=EOS&tsyms=CAD",
"https://min-api.cryptocompare.com/data/price?fsym=LITE&tsyms=CAD"];
window.onload=函数loadPrices(){
setInterval(函数(){
for(设i=0;i<4;i++){
获取(URL[i])
.然后(handleErrors)
.then(解析JSON)
.然后((数据)=>updatePrice(数据,i))
.catch(显示错误);
}
}, 5000);
}
函数parseJSON(res){
返回res.json().then(函数(parsedData){
log(parsedData[currency]);
返回解析数据[货币];
})
}
函数updatePrice(数据,i){
控制台日志(硬币[i]);
硬币[i].innerHTML=数据;
}
函数句柄错误(res){
如果(!res.ok){
抛出错误(res.status);
}
返回res;
}
函数显示错误(err){
控制台日志(err);
}
我打赌在运行循环时div不存在?直接答案是“是”,但不完全清楚发生了什么。主要问题是这行:。然后(updatePrice,I)
。变量i
不会传递给updatePrice
函数。
var coins;
window.onload = function loadPrices() {
coins = [document.querySelector("#btc"),
document.querySelector("#eth"),
document.querySelector("#eos"),
document.querySelector("#lite")];