JavaScript脚本仅向数组添加单个元素,请求排查问题原因
问题分析与修复方案
你的脚本只返回单个元素的核心原因是:数组array被声明在for循环内部。每次循环都会重新创建一个空数组,之前循环添加的元素都会被覆盖,最终只有最后一次循环的元素被保留。
修复后的代码
将数组声明移到循环外部,确保整个循环过程使用同一个数组:
function() { var vins = document.querySelectorAll('.dws-vehicle-listing-item-field.dws-vehicle-field-vin'); var array = []; // 移到循环外,避免每次循环重置数组 for (var i = 0; i < vins.length; i++) { var items = vins[i].innerText.replace(/ /g, "").split('\n')[2]; array.push(items); } return array; }
额外优化建议
如果部分元素的innerText按换行分割后不足3个元素(索引从0开始,[2]是第3个),会导致undefined被加入数组。可以增加判断逻辑过滤无效值:
function() { var vins = document.querySelectorAll('.dws-vehicle-listing-item-field.dws-vehicle-field-vin'); var array = []; for (var i = 0; i < vins.length; i++) { var processedText = vins[i].innerText.replace(/ /g, ""); var textSegments = processedText.split('\n'); // 确保存在有效元素再添加 if (textSegments.length >= 3 && textSegments[2].trim()) { array.push(textSegments[2]); } } return array; }
内容的提问来源于stack exchange,提问作者rebreb
相关产品推荐
相关产品推荐

