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

Uncaught TypeError报错排查:添加fetchValues函数后无法读取value属性

问题分析与修复

核心错误点

  1. 循环变量增量错误:第二个for循环里的增量写了i++,实际应该是j++。这个错误会让i在内部循环中被快速递增,直接超出elemsDataCount的范围,导致nodeLists[j][i]变成undefined,读取value时触发Cannot read properties of undefined报错。
  2. 模板字符串语法错误:给对象赋值时用单引号包裹${attrs[j]},这会把'${attrs[j]}'当作字面量键名,而非解析attrs[j]的实际值,必须改用反引号才能正确解析模板字符串。

修复后的fetchValues函数

const fetchValues = (attrs, ...nodeLists) => {
    let elemsAttrCount = nodeLists.length;
    let elemsDataCount = nodeLists[0].length;
    let tempDataArr = [];

    // 外层循环处理每组数据
    for(let i = 0; i < elemsDataCount; i++ ){
        let dataObj = {};
        // 内层循环遍历每个属性对应的节点列表
        for (let j = 0; j < elemsAttrCount; j++ ) { // 修正循环增量为j++
            // 用反引号正确解析模板字符串,设置对应键名
            dataObj[`${attrs[j]}`] = nodeLists[j][i].value;
        }
        tempDataArr.push(dataObj);
    }
    return tempDataArr;
}

额外优化建议

可以在函数开头添加边界检查,避免因不同节点列表长度不一致导致的潜在报错:

// 在函数开头插入
const allSameLength = nodeLists.every(list => list.length === elemsDataCount);
if (!allSameLength) {
    console.error('所有传入的节点列表长度必须一致');
    return [];
}

内容的提问来源于stack exchange,提问作者Abdi Med Amin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 02:50:59