You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

点击提交按钮后新生成的Div元素显示即消失的问题求助

点击提交按钮后新生成的Div元素显示即消失的问题求助

嘿,我一眼就看穿你遇到的问题啦——这是表单默认提交行为在搞鬼!咱们来一步步把它解决掉:

问题根源

你的按钮是<button type="submit">,放在<form>标签里的话,点击它浏览器会默认触发表单提交行为,也就是直接刷新整个页面。刚创建的div元素还没来得及在页面上站稳,就随着页面刷新被重置没了,所以你才会看到它一闪而过。

两种快速解决办法

方法1:阻止表单的默认提交行为

修改你的JavaScript事件处理函数,接收event参数并调用preventDefault(),直接拦截掉页面刷新的默认行为:

document.getElementById('button').addEventListener('click', function createPost(event) {
  // 关键代码:阻止表单默认提交刷新页面
  event.preventDefault();
  userInput();
});

方法2:把按钮改成普通按钮

直接修改HTML里的按钮类型,从submit改成button,这样它就只是个普通的点击按钮,不会触发表单提交了:

<button type="button" id="button">post</button>

给你整理好的完整可运行代码

HTML部分

<div class="cards" id="cards">
  <div>Type anything you want here and it will keep expanding.</div>
</div>
<p id="postLink"><a onclick='comment()' href="#">post</a></p>
<form id="form">
  <label for="textarea"></label>
  <textarea name="post" id="textarea"></textarea>
  <!-- 这里用方法2的话就改成type="button" -->
  <button type="submit" id="button">post</button>
</form>
<script src="script.js"></script>

CSS部分(我加了点边距让布局更舒服)

div {
  border: 1px solid black;
  margin: 8px 0;
  padding: 6px;
}
#form {
  margin-top: 10px;
}

JavaScript部分(用方法1的写法,还加了点体验优化)

const form = document.getElementById('form');
form.style.visibility = 'hidden';

function comment() {
  const postLink = document.getElementById('postLink');
  postLink.style.visibility = 'hidden';
  if (form.style.visibility === 'hidden') {
    form.style.visibility = 'visible';
  } else {
    form.style.visibility = 'hidden';
  }
}

document.getElementById('button').addEventListener('click', function createPost(event) {
  event.preventDefault(); // 阻止页面刷新
  userInput();
  // 额外优化:提交后清空文本框并隐藏表单,回到初始状态
  document.getElementById('textarea').value = '';
  form.style.visibility = 'hidden';
  document.getElementById('postLink').style.visibility = 'visible';
});

function userInput() {
  const textarea = document.getElementById('textarea').value.trim();
  // 加trim避免提交空内容
  if (textarea.length > 0) {
    const cards = document.getElementById('cards');
    const div = document.createElement('div');
    cards.appendChild(div);
    div.textContent = textarea;
  }
}

我还额外加了点小细节:比如判断输入时用trim()避免生成空div,提交后自动清空文本框并恢复初始页面状态,用起来会顺手很多~

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.07 08:09:50