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

JavaScript:点击按钮后输入框旧值残留及清除问题的解决方法

问题解决:输入框值更新后点击按钮仍显示旧值+点击后清空输入框

问题根源

你当前的代码把click事件监听写在了keyup事件内部,每次输入字符都会给按钮新增一个点击监听。这些旧的监听不会被覆盖,点击按钮时会一次性执行所有历史绑定的监听,每个监听携带的是当时存的userValue,所以会出现旧值重复显示的问题。

修正后的代码

JavaScript 代码

const addEvent = document.querySelector('.add');
const eventUserInput = document.querySelector('.input2');
const parentEl = document.querySelector('.event-list');

// 直接给按钮绑定一次点击事件即可
addEvent.addEventListener('click', () => {
    // 点击时才获取输入框当前的最新值
    const userValue = eventUserInput.value.trim();
    // 可选:避免添加空内容
    if (!userValue) return;
    
    const storeElement = document.createElement('p');
    storeElement.textContent = userValue; // 用textContent比innerHTML更安全,避免XSS风险
    parentEl.appendChild(storeElement);
    
    // 清空输入框
    eventUserInput.value = '';
});

// 可选:支持回车触发添加
eventUserInput.addEventListener('keyup', (e) => {
    if (e.key === 'Enter') {
        addEvent.click();
    }
});

HTML 代码(无需修改,直接使用即可)

<div class="list">
    <label for="input"></label>
    <input type="text" id="input" class="input2" placeholder="enter activity">
    <i class="ri-add-fill add">btn</i>

    <div class="event-list"></div>
</div>

关键改进点

  • 把点击事件的监听移到外部,只绑定一次,避免监听累积。
  • 点击按钮时实时获取输入框的当前值,而不是提前存在变量里。
  • 用textContent替代innerHTML,更安全(防止用户输入恶意HTML代码)。
  • 增加了空值判断,避免添加空的内容。
  • 可选添加了回车触发功能,提升用户体验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 13:03:26