本文详解为何监听表单 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 = '未找到该单词'; }); });
? 关键注意事项:
立即学习“Java免费学习笔记(深入)”;
掌握这一基础概念,不仅能解决字典 API 项目的问题,更是理解 DOM 元素职责分离的关键一步:表单负责提交行为,输入控件负责承载数据。
# javascript # word # java # js # json # 编码 # 表单提交
相关栏目: 【 公司新闻 】 【 行业动态 】 【 常见问题 】 【 科技资讯 】 【 技术教程 】 【 网络推广 】 【 SEO优化 】
相关推荐: 美图秀秀AI抠图如何换背景_美图秀秀AI背景替换与贴纸添加【攻略】 米侠浏览器网页内容显示不全怎么办 米侠页面调整 国产之光!OPPO Find X9 Pro被外媒评为2025年最佳手机 Windows如何查看和管理已安装的字体?(字体文件夹) css图片放进容器后尺寸异常怎么办_检查css盒模型与边框设置 C++中的编译期优化有哪些_C++编译器如何通过内联、循环展开等提升性能 LINUX如何删除用户和用户组_Linux userdel和groupdel命令用法【系统管理】 C++如何使用std::bind和占位符?(函数封装) html5表单minmax属性怎么用_数字日期输入范围限制方法【汇总】 电脑的“网络和共享中心”去哪了_Windows 11新版网络设置指南【新手】 如何在 Trinket 环境中正确实现海龟点击变色功能 LG集团助力第25季“圆满假期”:十年坚守,共谱公益华章 如何在 PHP 中基于当前时间智能筛选并显示电台节目的“当前/即将播出”信息 佳能 RF 35mm F1.2L 镜头专利曝光:人像镜皇即将登场 ChatGPT官方入口 ChatGPT官网网页版访问步骤详解 智能规划类小程序,职场人刚需赛道有哪些? 如何检查Golang模块是否安全_Golang依赖安全扫描技巧 Linux系统稳定性保障措施_长期运行经验总结【指导】 如何用快捷键快速关闭浏览器窗口_常用的浏览器快捷键大全【效率】 如何在Golang中实现错误处理_Golang错误类型与返回值处理 VSC里PHP函数跳转失效怎么办_跳转设置修复指南【解答】 Excel常用函数公式大全表格_核心函数公式汇总与应用场景 OpenAtom openKylin 2025年度报告 | 智启全球,根植未来 Composer的archive命令如何将项目打包?(代码归档技巧) html5的bdi标签处理双向文本怎么用_特殊字符显示说明【指南】 内存成本飙升!华硕自1月5日起调涨价格:联想戴尔等大厂早已行动 什么是Javascript的函数式编程_怎样用Javascript编写函数式代码? php打包exe怎么设置默认编码_字符集配置方法【操作】 苹果 Vision Pro 2 代开发细节:更轻量化,视场角更大 UC浏览器如何设置启动页 UC浏览器启动页设置方法 IGN评选2025年最佳日本游戏:《怪物猎人:荒野》上榜 如何实现Javascript的无限滚动_怎样用Javascript优化长列表渲染? 如何在javascript中操作剪贴板_怎样实现复制和粘贴功能? 狂欢不散场!EVNIA弈威电竞俱乐部开业仪式暨EVNIA玩家大集结NS2主题活动高能落幕! 如何在 Go 项目中将测试文件组织到子目录中 Python面向对象测试方法_mock解析【教程】 Win11怎么设置默认输入法 Win11固定中文输入法【步骤】 夸克浏览器无法打开新标签页怎么办 夸克浏览器标签页修复 html5 plus怎么调用_HTML5 Plus在HBuilder中调用扫码拍照等原生API【调用】 C++如何获取命令行参数?(argc, argv详解) 虫棍太刀双绝!三灯爆发流终极奥义 如何使用Golang实现并发数据清洗_Golang goroutine与管道处理示例 Laravel Valet 安装失败:解决 Symfony 依赖版本冲突问题 Python日志系统项目教程_日志收集分析与可视化实例 google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤 Excel图标_Excel图表与图标插入编辑教程 如何使用Golang实现RPC连接复用_Golang RPC长连接与复用方法 如何在不截图整页的前提下精准获取网页中动态刷新的CAPTCHA图像 JavaScript中如何操作剪贴板_ClipboardAPI怎么用 如何使用Golang实现Web应用缓存_提高响应速度