本文详解为何监听表单 submit 事件时 `form.value` 返回 undefined,并指出正确做法是通过独立获取 input 元素来读取用户输入,附带可运行代码示例与关键注意事项。
在 JavaScript 中,
const inputEl = document.querySelector('form'); // ❌ 变量名误导:实际选中的是 form 元素 const input = inputEl.value; // ❌ form 没有 value,始终为 undefined
这正是导致 console.log(input) 输出 undefined 的根本原因。
✅ 正确做法是:分别选取 和 元素,并在 submit 回调中从 input 元素读取 .value:
const formEl = document.querySelector('form'); const inputEl = document.querySelector('input[type="text"]'); // 更精确的选择器 const url = 'https://api.dictionaryapi.dev/api/v2/entries/en/'; formEl.addEventListener('submit', (e) => { e.preventDefault(); // 阻止页面刷新 const searchTerm = inputEl.value.trim(); // ✅ 获取真实输入值,并去除首尾空格 if (!searchTerm) { console.warn('请输入有效单词'); return; } console.log('搜索词:', searchTerm); fetch(`${url}${encodeURIComponent(searchTerm)}`) .then(res => { if (!res.ok) throw new Error(`HTTP ${res.status}`); return res.json(); }) .then(data => { console.log('API 响应:', data); // ✅ 此处可添加渲染逻辑(如更新 .meaning 元素) }) .catch(err => { console.error('请求失败:', err); // ✅ 可显示错误提示给用户,例如:document.querySelector('.meaning').textContent = '未找到该单词'; }); });
? 关键注意事项:
掌握这一基础概念,不仅能解决字典 API 项目的问题,更是理解 DOM 元素职责分离的关键一步:表单负责提交行为,输入控件负责承载数据。
# javascript # word # java # js # json # 编码 # 表单提交
相关栏目: 【 运营推广 】 【 网络优化 】 【 技术教程 】
相关推荐: Win11任务栏天气怎么关闭 Win11隐藏天气小组件图标【设置】 Linux如何使用Curl发送请求_Linux下API接口测试与文件下载技巧【步骤】 MAC如何隐藏文件夹及文件_MAC终端命令隐藏与第三方工具加密【教程】 如何使用Golang net包进行TCP通信_Golang net TCP客户端与服务器示例 Windows10电脑怎么设置自动连接WiFi_Win10无线网络属性勾选 Win11怎么设置任务栏透明_Windows11使用工具美化任务栏 TestNG的testng.xml配置文件怎么写 php8.4如何调用com组件_php8.4windows下com操作指南【教程】 Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】 Win11怎么关闭搜索历史_Win11清除设备上的搜索历史记录 如何在 ZSH 提示符中动态条件显示 Git 分支与虚拟环境信息 Win11怎么设置虚拟键盘_打开Win11屏幕键盘操作指南【技巧】 Windows电脑键盘突然失灵怎么办?(驱动与硬件排查) Blazor 创建和引用 RCL 项目的方法 Go语言中切片索引语法的常见错误解析 Win11怎么设置默认视频播放器_Windows 11关联媒体文件打开方式【步骤】 php打包exe怎么设置默认编码_字符集配置方法【操作】 短链接怎么批量还原php_用多线程脚本提升处理速度【指南】 Windows如何设置登录时的欢迎屏幕背景?(锁屏界面) Win11怎么更改电脑名称_Windows 11修改计算机名操作指南【步骤】 Win11如何暂停系统更新 Win11暂停更新最长时限设置【步骤】 Win10如何卸载Skype_Win10卸载Skype步骤【步骤】 Python技术债务管理_长期维护解析【教程】 mac怎么安装字体_MAC添加第三方字体与字体册管理【教程】 Win11怎么忘记WiFi网络_Win11删除已保存无线连接【教程】 如何使用Golang sort排序切片_Golang sort排序方法示例 Win11如何设置环境变量 Win11添加和修改系统与用户变量【教程】 Win11任务栏日历打不开怎么办 Win11修复日历通知中心【指南】 如何使用Golang私有模块访问控制_配置Token和认证权限 LINUX如何删除用户和用户组_Linux userdel和groupdel命令用法【系统管理】 Win11声音忽大忽小怎么办 Win11音频增强功能关闭教程【修复】 Python日志管理实践_分级与追踪说明【指导】 Win10如何更改开机密码_Windows10登录选项更改密码 电脑的“网络和共享中心”去哪了_Windows 11新版网络设置指南【新手】 Python类装饰器使用_元编程解析【教程】 php做exe支持多线程吗_并发处理实现方式【详解】 php怎么操作Redis_Redis扩展连接与基本命令使用方法【方法】 Linux怎么设置磁盘配额_Linux系统Quota安装与用户空间限制【教程】 php485怎么发送十六进制数据_php485串口HEX格式传输技巧【方法】 Win11如何开启系统更新 Win11开启系统更新方法【步骤】 Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】 Python数据仓库与ETL构建实战_Airflow调度流程详解 PHP cURL GET请求:正确设置认证与自定义请求头的完整教程 Win11怎么设置ipv4地址_Windows 11固定静态IP地址配置教程【详解】 Win11怎么设置开机自动连接宽带_Windows11创建拨号连接计划任务 Windows10电脑怎么设置虚拟内存_Win10高级系统设置性能 PythonCSV与Excel数据处理教程_批量读取与写入实战 Windows10系统更新错误0x80070002_Win10自动更新失败手动修复 Win11怎么设置开机密码_Windows11账户登录选项PIN码 Win11怎么关闭系统声音_Win11系统提示音静音设置【详解】