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

数组push操作返回空双引号而非实际输入值,如何排查解决?

问题排查与修复方案

核心问题根因

  • 重复绑定事件监听:你把inputName.addEventListener('keyup', handletyping)写在了事件回调函数handletyping内部,这会导致每次键盘按键抬起时,都给输入框新增一次相同的事件监听。多次绑定后,按下回车会触发多次handletyping执行,如果第一次执行时你有清空输入框的逻辑,后续执行的insertName就会传入空字符串,最终数组就会多出来一个空值。
  • 未阻止回车默认行为:如果你的输入框包裹在<form>标签内,按下回车会触发表单默认提交行为,输入框内容会被自动清空,你在keyup阶段读取到的event.target.value已经是空值。
  • 事件触发时序问题:如果你的清空输入框逻辑绑定在keydown阶段,keydown会先于keyup触发,等keyup执行时输入框已经被清空,拿到的就是空值。

修复后的代码

// 初始化阶段绑定事件,禁止放在事件回调内部
inputName.addEventListener('keyup', handletyping); 
inputName.focus();  

function handletyping(event) {
    if (event.key === 'Enter') {
        // 阻止回车默认行为,避免表单提交、输入框自动清空
        event.preventDefault();
        const inputValue = event.target.value.trim();
        // 可选判断:过滤空输入,避免插入无效值
        if (inputValue) {
            insertName(inputValue);  
        }
        console.log(globalNames);
        // 如需清空输入框,在读取数值后再执行
        event.target.value = '';
    }                   
}

验证步骤

  • 按下回车后先打印event.target.value,确认读取到的输入值是否正确
  • 检查insertName函数内部是否有修改传入值、默认插入空值的逻辑
  • 浏览器控制台查看inputName元素的事件监听列表,确认keyup事件只绑定了一次handletyping回调

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 08:54:05