javascript - Javascript 只显示一次 div
问题描述
所以我有一个带有错误消息的计算器,如果输入是 NaN,他们按下“计算”按钮。每次用户按下计算时,都会不断创建错误消息。我如何使它即使在多次按下“计算”后也只会显示?
function displayErr() {
const formBox = document.querySelector("form");
const errorBox = document.createElement("div");
errorBox.className = "errorBox";
const errorText = document.createTextNode("Those are not numbers!");
errorBox.appendChild(errorText);
formBox.appendChild(errorBox);
}
if ((isNaN(billInput)) || (isNaN(peopleAmount)) || (billInput === "") || (peopleAmount === "")) {
displayErr();
}
解决方案
最直接的方法是检查元素是否已经存在。
function displayErr() {
// Get error element
const errorElement = document.getElementsByClassName('errorBox');
// If it already exists
if (errorElement && errorElement.length > 0) {
// Dont add another one
return;
}
// Add new errorBox
const formBox = document.querySelector("form");
const errorBox = document.createElement("div");
errorBox.className = "errorBox";
const errorText = document.createTextNode("Those are not numbers!");
errorBox.appendChild(errorText);
formBox.appendChild(errorBox);
}
另一种选择是使用 css 类来“隐藏”元素;
- 总是渲染元素,但隐藏它
display: none
- 在 中
displayErr()
,使用类似的东西使元素可见document.getElementsByClassName('errorBox')[0].style.display = block;
推荐阅读
- javascript - 在 React 中切换添加到收藏夹的按钮颜色
- python - 我有一个 Python 字典的问题,它有字符串作为键,非常长的 Numpy 数组作为值
- flutter - 由于上述问题,无法构建颤振插件 url_launcher_macos
- python - 从数据库中检索数据而不使用额外的页面
- reactjs - 在 cmd 中运行 create-react-app 后未创建新的反应应用程序
- ios - “ContentView.swift”目前被锁定编辑
- javascript - 来自本地主机的多个 .js 调用
- html - 在暗模式下控制 Gmail 中的颜色交换
- java - 如何使用 Java Spring 的泛型类型实现存储库模式
- reactjs - 在控制台中使用 react-hooks useEffect 警告 React Apollo