在具有不同结果的两个不同页面上调用相同的函数将 element.style.display 更改为 "block"

Calling same function to change element.style.display to "block" on two different pages with different outcome

我正在开发一个简单的 CRUD-web-app,包含 3 个页面,一个 landing/index 页面,1 个页面用于查看显示保存的数据,1 个页面用于进行更改并将这些更改保存在 indexeddb 中. 在其中两个页面上,我调用了一个简单的 javascript 函数来将 .style.display 从“none”更改为“block”以便显示模态。由于某种原因,它只适用于一页。在另一页(HTML 下面显示的代码)模式仅显示一瞬间,然后导航到着陆页。

function modalOpen(){
let modal = document.getElementById("aModal");
modal.style.display = "block";}

包含此代码的 javascript 文件在两个 HTML 文件中都有链接。 下面是相应的 HTML 代码。该函数在第 5 行被调用。

 <main>
  <form>
    ....
   <button id="bSubmitExercise" onclick="edit('all')">Änderungen speichern</button>
   <button id="bOpenDeleteModal" onclick="modalOpen()">Übung löschen</button>
   <button id="bBackToIndex" onclick="location.href='detailsExercise.html'">Zurück zur Übersicht</button>
  </form>
</main>
<article id="aModal" class="aModal">
    <section class="sModalContent">
        <h5 id="hExercisesName"></h5>
        <div class="dContModalButtons">
            <button id="bModalConfirmDelete" class="bModal" onclick="deleteExercise()">Löschen</button>
            <button id="bModalClose" class="bModal" onclick="modalClose()">Fenster schließen</button> 
        </div>
    </section>
</article>

当我打开 chrome devtools 并从控制台调用 modalOpen() 函数时,模式会按预期显示。 使用 chrome、edge 或构建为 android 移动设备的 apache cordova 应用程序时会发生此行为。缓存在两个浏览器中多次清除的已保存数据。 为什么这(没有)发生?

由于历史原因,默认情况下,<button> 标签在 <form> 中时充当 提交 按钮。您可以执行以下两项操作之一:

  • 如果您正在使用某种 ajax 机制,您可能根本不需要 <form>
  • 您可以明确制作按钮 <button type=button> 以禁用该提交行为