单击按钮时停止加载 onload 内容

问题描述 投票:0回答:1

我有一个包含此正文的 HTML 文件:

<body onload="loadContent()">
  <form action="" onsubmit="event.preventDefault()">
    <table>
      <tr>
        <td></td>
        <td> 
          <button type="submit" onclick="saveNewProject()">Save</button>
        </td>
      </tr>
    </table>
  </form>
</body>

它包括一个表单,并且有一个用于保存新内容的按钮:

<button type="submit" onclick="saveNewContent()">Save</button>

加载页面时,会加载包含现有内容的数组,然后通过填写表单并单击“保存”添加新内容时,页面应显示现有内容和新内容。

我已经成功地显示了新内容。我遇到的问题是,每当我单击“保存”时,页面现在都会向我显示现有内容两次以及新输入的内容。

例如:有 3 个现有元素,我添加第 4 个元素并单击“保存”,现在我看到重复的 3 个现有元素和新输入的元素(总共 7 个元素,而不是 4 个)。

saveNewContent 函数应该包含 loadContent 函数:

function saveNewContent() {
  loadContent();
}

如何在每次添加新内容时不再重复现有内容?我只是希望能够一次性看到现有内容以及新添加的内容。

这是loadContent()函数。它遍历一个对象数组,然后 saveNewContent 创建新对象并将其添加到同一对象数组中。

function loadContent() {
  for (var i=0; i < contents.length; i++) {
    card                    = document.createElement('div')
    card.className          = 'card'
    description             = document.createElement('span')
    description.textContent = contents[i]["description"]
    contentCard             = document.getElementById("contents").appendChild(card)
    contentCard.appendChild(description)
  }
javascript dom events event-handling
1个回答
0
投票

看起来每次调用

loadContent()
时,所有内容都会再次添加。如果您在再次添加之前清除所有内容,也许可以解决您的问题:

function loadContent () {
  // clear everything at first:
  document.getElementById("contents").innerHTML = ""
  for ( /* ... */ ) {
    // ...
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.