我似乎无法触及我的对象变量,我可能只是在某处做了一个虚假的错误。我的对象数组(pResult)的console.log看起来像这样,第一个对象扩展但它们看起来都很相似:
[Object, Object, Object, Object, Object, Object, Object, Object, Object]
0: Object
depTime: "2014-12-04 18:35"
destination: "Norsesund station"
nr: "562"
operator: "Västtrafik"
typText: "Buss"
__proto__: Object
1: Object
2: Object
3: Object
4: Object
5: Object
6: Object
7: Object
8: Object
length: 9
__proto__: Array[0]
我试着这样做......
for (var i = 0; i <= pResult.length; i++) {
var html = html + '<tr>';
var html = html + '<td>';
var html = html + pResult[i].depTime;
var html = html + '</td>';
var html = html + '</tr>';
}
...但是遇到了这个错误:
Uncaught TypeError: Cannot read property 'depTime' of undefined
答案 0 :(得分:3)
更改:
i <= pResult.length;
致:
i < pResult.length;
数组基于0是索引的,因此如果它的长度为3,则只有索引0,1,2
答案 1 :(得分:1)
您可以简单地使用reduce
:
var html = pResult.reduce(function(previousValue, currentValue) {
return previousValue + '<tr><td>' + currentValue.depTime + '</td></tr>';
}, '');
请注意,这仅适用于IE 9+(但它适用于所有其他现代浏览器),因此如果您需要支持旧版本的IE,则可以填充该方法。
答案 2 :(得分:0)
试试这个:
for (var i = 0; i < pResult.length; i++) {
var html = '<tr>';
html += html + '<td>';
html += html + pResult[i].depTime;
html += html + '</td>';
html += html + '</tr>';
}
问题是你是loopin,直到数组长度,但数组从0索引开始,所以
如果你有阵列
var pResult= [object,object,object];
pResult.length =3
pResult[3]
不存在,因此未定义
注意当您只想添加文本时,不要重新创建变量,只需将其添加到现有文件中即可。例如html + =&#34;添加的文字&#34;