我正在用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;
我的数组包含使用push
array.push($('[title!="CATA"][collection="items"]'));
&#13;
我得到了行长&#39;的所需输出,并显示&#39; Inside&#39;,然后显示&#39; TypeError:undefined不是函数&#39;。我也试过使用.attr(&#39; val&#39;)但是也有同样的错误。
执行console.log(array [row] [col])给出了以下内容。
{ 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;
我要做的就是访问&#39; val&#39;。
答案 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]);
}
现在查看你的控制台,你会看到你的数组没有用你期望的对象种类填充的索引,以及那些对象。