循环获取所有元素时如何正确使用forEach?Web爬虫取值问题
问题解决办法
错误原因
- 现有代码只能返回最后一个值的核心问题是:每次循环都用单个value直接覆盖
codeArray变量,而非追加到数组中,同时你没有初始化codeArray为数组类型。 $codes.get()调用forEach报错的常见诱因:你的函数声明存在语法错误(原代码漏写了函数括号),或是变量未正确初始化,jQuery的.get()返回的是标准JS数组,本身完全支持forEach方法。
修复后的实现代码
方案1:使用forEach遍历
function scrapeValues() { // 初始化空数组存储所有value const codeArray = []; const $codes = $('input[name="code"]'); // 遍历所有匹配的DOM节点 $codes.get().forEach(code => { const value = $(code).val().trim(); // 把当前value追加到数组 codeArray.push(value); }) return codeArray; }
方案2:更简洁的jQuery原生map方法(推荐)
不需要手动转数组、遍历,直接用jQuery封装的map方法批量提取值:
function scrapeValues() { return $('input[name="code"]').map(function() { return $(this).val().trim(); }).get(); }
调用上述两个函数都会返回['111', '222', '333']的结果,符合需求。
内容的提问来源于stack exchange,提问作者SJK
相关产品推荐
相关产品推荐

