因此,我有一个无法编辑的index.html。我唯一可以使用的是链接到该索引文件的javascript文件。模态应该通过javascript(通过createElement方法)创建。

这是我有问题的地方,因为我无法将该模式附加到文档中,并且我直接从脚本中的函数显示它时遇到了问题。

在 Vanilla js中甚至可以做到吗?我知道jquery有解决方案,但我对 Vanilla 方法感兴趣。

这是一个带有按钮的测试,因此我确定它可以正常工作,然后将其编码为可以在就绪状态下运行:

<button onclick="Popup()" role='button'>
    Show Alert
</button>


<script type="text/javascript">
    function Popup() {
        var myDialog = document.createElement("dialog");
        var text = document.createTextNode("This is a dialog window");
        myDialog.appendChild(text);
        myDialog.showModal();
    }
</script>

这是错误:

最佳答案

使用document.body.appendChild(myDialog)将对话框元素附加到主体

function Popup() {
  var myDialog = document.createElement("dialog");
  document.body.appendChild(myDialog)
  var text = document.createTextNode("This is a dialog window");
  myDialog.appendChild(text);
  myDialog.showModal();
}
<button onclick="Popup()" role='button'>
    Show Alert
</button>

10-06 10:12