未捕获(在承诺中)类型错误:无法读取 null 的属性"样式"



我收到了标题中提到的错误,从我所看到的情况来看,这似乎是一个很受欢迎的问题。

EDIT:我知道这个错误意味着我试图编辑的元素为null,但只有在执行睡眠函数后它才会变为null。

因此,这里发生的事情是,我想使某个div上显示的信息是动态的,我正在使用下面显示的sleep函数。我在它后面的行上得到了错误。可能是什么原因造成的?由于某种原因,在我调用sleep((函数后,脚本无法识别我想要的元素。如果你有更好的方法来完成我上面描述的,那么欢迎你发表你的建议。

document.getElementById("box_2_info_" + i).style.display = "contents";
document.getElementById("box_2_info_" + i).className += " animate-bottom";
await sleep(3000);
//error below -->
document.getElementById("box_2_info_" + i).style.display = "none";

这是我的睡眠功能

function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
};

提前感谢

这是因为您没有等待DOM准备好,所以DOM元素还不可用。

如果更换

document.addEventListener("DOMContentLoaded", run, false);

带有

run()

你会得到相同的错误

(function () {
"use strict";
const run = async () => {
var i = 0;
var el = document.getElementById("box_2_info_" + i);
el.style.display = "contents";
el.classList.add("animate-bottom");
console.log("sleeping...");
await sleep(3000);
console.log("awake!");
el.style.display = "none";
};
const sleep = (ms) => {
return new Promise((resolve) => setTimeout(resolve, ms));
};
document.addEventListener("DOMContentLoaded", run, false);
// run();
})();
<!DOCTYPE html>
<html lang="en" ng-app="app">
<head>
<meta charset="utf-8" />
</head>
<body>
<div id="box_2_info_0"></div>
</body>
</html>

所有这些错误都意味着您试图编辑的属性,在这种情况下,id为"box_2_info_" + i的元素不存在。我会仔细检查您的标记,以确保此属性存在。

相关内容

最新更新