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

如何实现同一提交表单的多次输入词汇依次展示不覆盖原有内容

问题原因

当前代码每次提交时直接对display元素的innerHTML执行赋值操作,新内容会直接替换原有内容,因此会出现旧内容被覆盖的问题。

解决方案

基础实现(文字直接并排展示)

将赋值逻辑改为内容追加即可,同时可以补充常用的交互优化:

function showTag(e){
    // 阻止表单默认提交导致的页面刷新
    e?.preventDefault();
    const inputContent = document.getElementById('user_input').value.trim();
    // 过滤空输入
    if (!inputContent) return;
    // 追加内容,两次输入之间加空格分隔,可按需替换为其他分隔符
    document.getElementById('display').innerHTML += ` ${inputContent}`;
    // 提交后清空输入框
    document.getElementById('user_input').value = '';
}

对应调整HTML结构,将提交按钮放入表单内绑定提交事件,适配回车提交的使用习惯:

<form onsubmit="showTag(event)">
    <input type="text" name="message" id="user_input">
    <input type="submit" value="提交">
</form>
<p><span class="tag is-info" style="background-color:#33475b;color:white;" id='display'></span></p>

可选优化(每个词汇为独立tag样式)

如果需要每个提交的词汇都保留独立的tag样式、带间距展示,可以调整追加逻辑为动态生成新的tag元素:

function showTag(e){
    e?.preventDefault();
    const inputContent = document.getElementById('user_input').value.trim();
    if (!inputContent) return;
    // 生成新的tag元素
    const tagItem = document.createElement('span');
    tagItem.className = 'tag is-info';
    tagItem.style.cssText = 'background-color:#33475b;color:white;margin-right:8px;';
    tagItem.textContent = inputContent;
    // 追加到展示容器
    document.getElementById('display').appendChild(tagItem);
    document.getElementById('user_input').value = '';
}

内容的提问来源于stack exchange,提问作者Student

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 14:09:03