如何为现有模态框打开脚本添加延迟触发功能?
问题:整合模态框自动弹出的假加载效果
你现有一段原生JavaScript实现的多模态框控制代码,希望添加3秒假加载后自动弹出myModal的功能,以下是整合后的完整代码:
整合后的完整代码
<script> var datamap = new Map([ [document.getElementById("myBtn"), document.getElementById("myModal")], [document.getElementById("myBtn1"), document.getElementById("myModal1")], [document.getElementById("myBtn2"), document.getElementById("myModal2")] ]); datamap.forEach((value, key) => { doModal(key, value); }); function doModal(anchor, popupbox) { // 获取关闭模态框的<span>元素 var span = popupbox.getElementsByClassName("close")[0]; // 按钮点击显示模态框 anchor.addEventListener("click", function (event) { popupbox.style.display = "block"; }); // 关闭按钮点击隐藏模态框 span.addEventListener("click", function (event) { popupbox.style.display = "none"; }); // 点击模态框外部隐藏模态框 window.addEventListener("click", function (event) { if (event.target == popupbox) { popupbox.style.display = "none"; } }); } // 3秒后自动弹出myModal(假加载效果) setTimeout(function() { document.getElementById("myModal").style.display = "block"; }, 3000); </script>
说明
- 你的原代码是原生JS实现的模态框控制逻辑,不需要依赖jQuery,因此直接用原生写法实现自动弹出即可,无需使用jQuery的
$('#myModal').modal()方法(除非你页面引入了Bootstrap等依赖jQuery的模态框插件)。 - 添加的
setTimeout函数会在页面加载完成后等待3000毫秒(3秒),然后将myModal的display样式设为block,和点击按钮触发的显示效果完全一致,实现假加载后的自动弹出。 - 如果需要调整假加载时长,修改
setTimeout的第二个参数即可(单位:毫秒)。
内容的提问来源于stack exchange,提问作者xero
相关产品推荐
相关产品推荐

