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

React中获取输入框值失败求助:控制台输出为空

问题分析与修复方案

嘿,我一眼就看出问题在哪了——你只在页面刚加载的时候获取了一次输入框的value,之后用户输入内容时,这个值根本没更新!

问题根源

你这段代码里:

let newNameValue = document.getElementById('name').value;

是在页面初始化时执行的,这时候输入框里还没内容,所以newNameValue一开始就是空字符串。之后用户输入触发input事件时,你打印的还是这个初始的空值,自然看不到用户输入的内容。

修复后的代码

把获取输入值的操作放到input事件的回调函数里,每次用户输入都重新读取最新值:

const newName = document.getElementById('name');
let beerArrayNames = this.state.beerArrayName;
newName.addEventListener('input', function(event) {
    // 每次输入时都获取当前最新的输入值
    let newNameValue = newName.value;
    console.log('test ' + newNameValue);
    if (beerArrayNames.includes(newNameValue)) {
        newName.setCustomValidity('This already exist!');
    } else {
        newName.setCustomValidity('');
    }
});

更简洁的写法

其实还可以直接用事件对象的target属性来获取当前输入框的值,省去重复获取DOM元素的步骤:

const newName = document.getElementById('name');
let beerArrayNames = this.state.beerArrayName;
newName.addEventListener('input', function(event) {
    const currentValue = event.target.value;
    console.log('test ' + currentValue);
    if (beerArrayNames.includes(currentValue)) {
        newName.setCustomValidity('This already exist!');
    } else {
        newName.setCustomValidity('');
    }
});

这样修改后,你就能在控制台看到用户实时输入的内容,验证逻辑也能正常工作了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:45:28