Javascript 只显示一次 div

标签 javascript html css

所以我有一个显示错误消息的计算器,如果他们在输入为 NaN 的情况下按下“计算”按钮。每次用户按下计算时,都会不断创建错误消息。我如何才能让它即使在多次按下“计算”后也只显示?

enter image description here

    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();
}

最佳答案

直接的方法是check if the element already exists.

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 类来“隐藏”元素;

  1. 始终呈现该元素,但使用 display: none 隐藏它
  2. displayErr() 中,使用类似 document.getElementsByClassName('errorBox')[0].style.display = block; 的方式使元素可见

关于Javascript 只显示一次 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64119168/

相关文章:

javascript - CSS:响应式设计,定位卡片以适应任何尺寸的屏幕中间

javascript - orderBy 未按预期工作

javascript - 如何防止从顶级下拉 anchor 导航?

html - Chrome/Webkit 悬停问题

html - 两个之间的一个 div,两边的两个都需要碰到浏览器的边缘

css - 以 HTML 格式在 Joomla 模块中以视频为中心叠加的文本

javascript通过按钮发布表单,一种有效,一种无效

javascript - 启动 Angular 服务器时出错

javascript - 在 react 中的两个组件之间共享 Prop /状态

javascript - WP 8.1 WinJS - 如何停止游戏循环?