在node.js中获取read属性错误未定义

时间:2014-05-07 11:23:25

标签: javascript jquery arrays

我正在努力抓取部分,我正在很好地获取数据,但是当我迭代数组并尝试获取数据时       TypeError:无法读取未定义的属性“3”

我的代码是:

  $('table#blob1 tr.insRow').filter(function(){
            var data = $(this);
            i = i + 1;
            bow_arr[i] = new Array(6);
            bow_arr[i][1] = data.children(1).text();
            bow_arr[i][2] = data.children(2).text();
            bow_arr[i][3] = data.children(3).text();
            bow_arr[i][4] = data.children(4).text();
            bow_arr[i][5] = data.children(5).text();
            bow_arr[i][6] = data.children(6).text();    
   })

这里我创建了二维数组并将数据插入其中。并且我能够正确地获取所有子值,并且我已将所有这些数据插入到二维数组中。

过滤器功能运行5次,因为它遇到了5次。

 for(i=0;i<1;i++){
     console.log(bow_arr[i][3]+" - "+bow_arr[i][4]);
  }

上面的代码我只是试图打印值,但我得到像这样的TypeError。              TypeError:无法读取未定义的属性“3”

2 个答案:

答案 0 :(得分:2)

根据您的代码,您的迭代器循环以错误的方式写入。

在您的代码中

i = i + 1;

这使你的数组​​看起来像这样:

bow_arr[0] === undefined; // equals true

bow_arr[1] === [ 'text from child 1', 'text from child 2' ... ]
bow_arr[2] === [ 'text from child 1', 'text from child 2' ... ]

你的迭代器

for(i=0;i<1;i++) { ... }

只会一次迭代0

你有两种可能性。修复代码或修复迭代器

我选择修复你的迭代器,它应该是:

for(i=1;i<bow_arr.length;i++){
   console.log(bow_arr[i][3]+" - "+bow_arr[i][4]);
}

只是为了确保您还可以检查数组中的此项是否未定义。

for(i=1;i<bow_arr.length;i++) {
   if ( !bow_arr[i] || !bow_arr[i][3] || !bow_arr[i][4] ) continue;
   console.log(bow_arr[i][3]+" - "+bow_arr[i][4]);
}

答案 1 :(得分:1)

正如VisioN所说,你正在索引0,但你没有在该帖子中输入任何内容。启动我为0,你应该没事:)。将增量移动到过滤器功能的末尾。

  var i = 0;

  $('table#blob1 tr.insRow').filter(function(){
            var data = $(this);
            bow_arr[i] = new Array(6);
            bow_arr[i][1] = data.children(1).text();
            bow_arr[i][2] = data.children(2).text();
            bow_arr[i][3] = data.children(3).text();
            bow_arr[i][4] = data.children(4).text();
            bow_arr[i][5] = data.children(5).text();
            bow_arr[i][6] = data.children(6).text();    
            i = i + 1;
   })

Fyi:你在下面的代码中循环ONCE =有一个循环有什么意义? :)

 for(i=0;i<1;i++){
     console.log(bow_arr[i][3]+" - "+bow_arr[i][4]);
  }