javascript - 如何在页面加载后的特定时间添加和删除 HTML 类?

标签 javascript

我试图在页面加载后几秒钟向 HTML 元素(ID bland-html-element)添加和删除 HTML 类(.flashy-design)。

我的以下尝试没有注入(inject)该类。

setTimeout(function() {
    function addFlashyDesign() {
        var element = document.getElementById("bland-html-element");
        element.classList.add("flashy-design");
    }
}, 3000);

function startDelay(){
    setTimeout(function() {
        function addFlashyDesign() {
            var element = document.getElementById("bland-html-element");
            element.classList.add("flashy-design");
        }
    }, 3000);
};

window.onload = "startDelay();";

想法?

最佳答案

解释在代码中。您犯的主要错误是没有像您应该的那样使用回调函数。

let element = document.getElementById("bland-html-element");

// show after 2 seconds
// RECOMMENDATION: use window.setTimeout instead of setTimeout
// NOTE: use a callback function, not an embedded named function
window.setTimeout(function() {
     element.classList.add("flashy-design");
}, 2000);

// hide after 3 seconds
window.setTimeout(function() {
     element.classList.remove("flashy-design");
}, 3000);
#bland-html-element{
  height: 200px;
  width: 200px;
  background-color: green;
  display: none;
}
#bland-html-element.flashy-design{
  display: block;
}
<div id="bland-html-element"></div>

PS:不要使用window.onload。请改用 window.addEventListener('load', function(){})。我没有在示例中的加载事件之后嵌入它,但您应该在 DOM 中存在 bland-html-element 之前运行代码,否则您将面临运行代码的风险。

关于javascript - 如何在页面加载后的特定时间添加和删除 HTML 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54380677/

相关文章:

javascript - 用于日期选择器的 jquery 时间选择器插件

javascript - 如何创建具有预定义值的下拉列表,但也应该有向列表中添加新值的选项

javascript - 当你显示和隐藏一个 div 时,它会自动重新调整周围的元素吗?

javascript - 字母数字值的正则表达式,而不是两个连续的下划线下划线

javascript - Owl Carousel 仅在右侧溢出

javascript - 使用 jQuery 移动(突出显示)HTML 表格中的最后一行

javascript - CKEditor 不适用于 MAC chrome 和 MAC Safari

javascript - 检测某个单词是否刚刚输入到文本区域中

javascript - 为什么 "Product Quick View"JavaScript 插件会影响不是由操作触发的分区?

javascript - 从两个链接打开 ant design popover