javascript - 未捕获的类型错误 : cannot set property 'display' of undefined

标签 javascript html typeerror

当我点击这个 div 时,我希望它显示一条错误消息,指出它太贵了

我尝试将 document.getElementByClassName 更改为变量,但我没想到它会起作用。

function hideError() {
  document.getElementsByClassName("errorMessage").style.display = "none";
}
function showError() {
  document.getElementsByClassName("errorMessage").style.display = "contents";
  setTimeout("hideError", 5000);

未捕获类型错误:无法设置未定义的属性“显示”

最佳答案

你们非常接近。第一期getElementsByClassName返回 HTMLCollection 。您需要遍历此列表或调用 [0] 来获取第一项。

其次,对 setTimeout 的调用应该是一个函数作为第一个参数(而不是字符串):setTimeout(hideError, 5000);

function hideError() {
  document.getElementsByClassName("errorMessage")[0].style.display = "none";
}

function showError() {
  document.getElementsByClassName("errorMessage")[0].style.display = "contents";
  setTimeout(hideError, 5000);
}

showError();
<div class="errorMessage">ERROR</div>

关于javascript - 未捕获的类型错误 : cannot set property 'display' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57834882/

相关文章:

javascript - 如何在 React 中验证 Prop 的类及其字段(嵌套对象)的类?

javascript - 将 Django 条件从 javascript 传递回 django 的方法

css - 使用适用于移动设备的 CSS 调整 div 大小

使用点击处理程序修改段落的 JavaScript 类

typeerror - elm-lang 错误 `(==) is expecting the right side to be a:`

转换后的字符串的 Python TypeError 为 None

javascript - 比较运算符中数字和字符串的强制转换

javascript - HTML &lt;script defer> 可以在 &lt;script async> 之前执行吗?

javascript - 使用一个功能编辑多个元素

Javascript:typeof 说 "function"但它不能作为函数调用