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

DOM值绑定事件处理器后为空问题:如何获取有效输入键值对

输入框值存入数组为空的问题解决

我设置了两个输入框,分别用于为userNameValue和userScoreValue变量赋值;在game对象中编写了addPlayers方法,用于将这两个DOM值存入allUsers数组的对象中。但点击提交按钮触发事件监听时,存入数组的键值对为空字符串,却能成功推入数组。请问如何实现用户输入姓名、分数并提交后,存入的键值对不为空?

用户提供的代码:

'use strict';


const userNameValue = document.querySelector('.name').value;
const userScoreValue = document.querySelector('.score').value;
const submit = document.querySelector('.submit');

const game = {
    allUsers: [],
    addPlayers(){
        this.allUsers.push({userNameValue, userScoreValue});
        console.log(this.allUsers);
    }
}

submit.addEventListener('click', game.addPlayers.bind(game));

问题原因

你现在的代码是在页面加载时就直接获取了输入框的value,这时候用户还没输入任何内容,所以userNameValue和userScoreValue一开始就被赋值为空字符串,后续点击按钮时,使用的还是这个初始的空值,自然存入数组的就是空内容。

解决方法

把获取输入框值的操作移到addPlayers方法内部,这样每次点击提交按钮时,才会实时获取当前输入框的内容,还可以增加非空判断避免无效提交:

'use strict';

const submit = document.querySelector('.submit');

const game = {
    allUsers: [],
    addPlayers(){
        // 每次点击时才获取当前输入框的最新值
        const userNameValue = document.querySelector('.name').value;
        const userScoreValue = document.querySelector('.score').value;
        
        // 过滤空内容和纯空格输入
        if(userNameValue.trim() && userScoreValue.trim()){
            this.allUsers.push({userNameValue, userScoreValue});
            console.log(this.allUsers);
        } else {
            console.log('姓名和分数不能为空,请输入有效内容');
        }
    }
}

submit.addEventListener('click', game.addPlayers.bind(game));

关键改动说明

  • 将获取输入框value的逻辑从全局代码移到addPlayers方法内,确保每次点击按钮都能拿到用户最新输入的内容
  • 增加trim()判断,避免用户输入空字符串或纯空格时也将无效数据存入数组

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 13:05:21