'未定义不是功能'在NodeJS中使用数组

时间:2015-08-13 11:12:11

标签: javascript arrays node.js cheerio

我正在用cheerio运行节点。我有这个函数需要显示数组中包含的元素的属性值。



for (var row = 0; row < array.length; row++) {
    console.log("Row Length: " + array[row].length);
    for (var col = 0; col < array[row].length; col++) {
        console.log("Inside:");
        console.log(array[row][col].getAttribute('val'));        
    }
}
&#13;
&#13;
&#13;

我的数组包含使用push

填充的列表项

&#13;
&#13;
array.push($('[title!="CATA"][collection="items"]'));
&#13;
&#13;
&#13;

我得到了行长&#39;的所需输出,并显示&#39; Inside&#39;,然后显示&#39; TypeError:undefined不是函数&#39;。我也试过使用.attr(&#39; val&#39;)但是也有同样的错误。

执行console.log(array [row] [col])给出了以下内容。

&#13;
&#13;
{ type: 'tag',
  name: 'li',
  attribs: 
   { id: 'Amber',
     collection: 'items',
     title: 'disk',
     val: '10|9|2|10|7|13|2|10|12|2|2|5|3|3|5|2|8|7|5|10|4|6|6|3|4|6|2|8|11|2|10|7|9|9|10|8' },
  children: 
   [ { data: 'disk : 10|9|2|10|7|13|2|10|12|2|2|5|3|3|5|2|8|7|5|10|4|6|6|3|4|6|2|8|11|2|10|7|9|9|10|8',
       type: 'text',
       next: null,
       prev: null,
       parent: [Circular] } ],
  next: 
   { type: 'tag',
     name: 'li',
     attribs: 
      { id: 'Amber',
        collection: 'items',
        title: 'usb',
        val: '3|3|2|4|2|4|3|3|3|13|5|13|2|13|2|5|5|3|4|3|6|3|2|2|5|13|2|3|2|13|2|13|2|2|13|4' },
     children: [ [Object] ],
     next: 
     .
     .
     .
&#13;
&#13;
&#13;

我要做的就是访问&#39; val&#39;。

4 个答案:

答案 0 :(得分:1)

我认为,错误是由这一行产生的

console.log(array[row][col].getAttribute('val'));

您正在非对象上调用.getAttribute。提供完整列表。

答案 1 :(得分:1)

求助:

console.log(array[row][col].attribs.val);

答案 2 :(得分:0)

数组中的一个或多个值为undefined,当您在其上调用getAttribute时,会抛出错误TypeError: undefined is not a function。要调试它,请使用console.log(array)或使用调试器查看数组内的数据。最终,jQuery函数使用未分配的变量填充数组,因此请查看选择器并查看它是否按预期执行。

答案 3 :(得分:0)

首先,打印更有用的消息:

if (!array[row][col] || !(array[row][col].getAttribute)) {
    console.log(row, col, array[row][col]);
}

现在查看你的控制台,你会看到你的数组没有用你期望的对象种类填充的索引,以及那些对象。