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

如何将输入框的值传入JavaScript对象? 解决输出[object HTMLInputElement]问题

问题根因

输出[object HTMLInputElement]的核心原因是:你把整个输入框对应的DOM元素对象直接当成输入内容传给了Student实例,没有读取输入框内用户实际输入的文本。DOM对象在被插入到页面文本内容时,会默认转换为[object HTMLInputElement]的字符串形式,因此不会展示你预期的姓名内容。
除了传值错误外,原代码还存在两个关键逻辑问题:

  • 取值方式错误:输入框的用户输入内容存在DOM元素的.value属性上,DOM元素本身不是输入值
  • 时序错误:页面加载完成时就创建了Student实例,此时用户还未输入任何内容,即便取值正确,实例中存储的也只会是输入框的初始空值,无法获取用户后续输入的最新内容
  • 变量引用混乱:原代码中nameStudent变量直接赋值为DOM元素,没有经过值转换就传入构造函数。
修正方案

按照以下逻辑调整代码即可解决问题:

  1. 页面加载阶段仅获取DOM元素的引用,不要在此阶段读取输入内容
  2. 把取值、创建Student实例、输出内容的逻辑全部挪到点击按钮的回调函数中,等用户完成输入、触发点击动作时,再实时读取输入框的当前值
  3. 调用Student类构造函数时,传入输入框.value对应的文本内容,不要传入DOM元素本身

修正后的参考代码:

// 页面加载时仅获取DOM引用
const inputInf = document.getElementById('inputInf');
const outputDom = document.getElementById("outputInfor");
const btn = document.getElementById("btn");

// 自定义Student类
class Student {
  constructor(name, studentNo) {
    this.name = name;
    this.studentNo = studentNo;
  }
}

// 点击事件回调内执行业务逻辑
btn.onclick = () => {
  // 实时读取输入框的当前输入文本
  const currentInput = inputInf.value.trim();
  // 传入实际文本值创建Student实例
  const student = new Student(currentInput, "替换为你的学号取值逻辑");
  // 输出实例中的姓名到页面
  outputDom.innerText = student.name;
}
相关检索关键词
  • JS 输出[object HTMLInputElement] 排查方法
  • 原生JS 获取输入框用户输入值
  • JS 事件回调内获取DOM值 时序问题
  • 自定义类传参时误传DOM对象的报错

内容的提问来源于stack exchange,提问作者Duy Thành

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.31 20:15:05