【发布时间】:2019-09-23 07:08:37
【问题描述】:
我正在尝试创建一个 vanilla JavaScript 模态,当从 HTML 文件(或 JS 文件)实例化它时,它能够由用户自定义。但是,在处理 close() 函数关闭模态时,不是一次关闭一个模态,而是使用其关闭按钮,第一个模态的关闭按钮关闭页面的所有模态。我不确定我做错了什么......
我研究了其他类似的 vanilla JavaScript、可定制的模态库,但它们中的大多数要么使用 jQuery,要么使用一些框架,或者包含很多我不熟悉的复杂性(我还是个初学者)。我在 GitHub、CodePen、Google 和这里进行了研究;但我还没有找到满足我需要的解决方案。
由于代码比较长,建议你直接去我的CodePen账户,在那里你可以得到完整的代码。
https://codepen.io/jdriviere/pen/zYOyJvv?editors=0011
但这是我的 close() 函数:
Modal.prototype.close = function() {
let modal = document.getElementById(this.options.id);
let modalBody = modal.children[0];
// Delete elements from Modal Body
for (let i = 0; i < modalBody.children.length; i++) {
modalBody.removeChild(modalBody.children[i]);
} // End of LOOP
// Delete Modal Body from Modal
modal.removeChild(modalBody);
// Delete Modal from DOM
modal.style.display = 'none';
document.body.removeChild(modal);
return this;
};
我希望代码一次关闭一个模式,最好是具有正确 ID 的模式(应由用户分配或默认情况下具有“NoID”ID)。相反,如果我关闭后续模式,它会关闭它们;但如果我关闭第一个,它会关闭所有这些。另外,有没有办法在创建模态实例后立即初始化()模态功能(我讨厌手动启动它们)?如果是这样,请在此处也包括您的解决方案,如果没有太多要求的话。
已经有一段时间了。非常感谢您的帮助。
谢谢。 :)
【问题讨论】:
标签: javascript modal-dialog simplemodal