2013-07-21 132 views
0

我有這個循環,它適用於我和i + 1,但i + 2起不起作用。 錯誤是:JavaScript for循環增量> 1問題

Cannot read property 'logo_sm' of undefined 

這裏是我的代碼:

var jsonObj = JSON.parse(http_request.responseText); 
var rows = ''; 
for(var i=0;i<jsonObj.length;i=i+2){ 
    rows += '<tr><td class="logo_sm">' + "<img src='"+jsonObj[i].logo_sm+"'/>" + '</td><td class="logo_sm">' + "<img src='"+jsonObj[i+1].logo_sm+"'/>" + '</td><td class="logo_sm">' + "<img src='"+jsonObj[**i+2**].logo_sm+"'/>" + '</td></tr>'; 
    i++; 
} 
document.getElementsByTagName('table')[0].innerHTML += rows; 

在for循環中,如果增量爲i ++和最後一列有我+ 1,而不是我+ 2,然後它工作。

看起來很簡單,但仍處於學習階段。所以,我正在努力。

+0

是否JSON包含一個數組,還是一個對象? – adeneo

+2

爲什麼在循環結束時遞增i變量? 我們也可以看到一個示例迴應? –

+2

無法重現:http://jsfiddle.net/UuZxg/1/(既不是偶數也不是奇數長度的數組)。你必須提供更多信息,甚至更好[學習如何**調試** JavaScript](http://www.netmagazine.com/tutorials/javascript-debugging-beginners)。 –

回答

0

您的for循環的設置方式您將嘗試訪問不存在的項目的數組索引。

如果您初始化i = json.length,並讓您的循環每次增加i + 2。當我等於JSON對象的長度時,您的循環將嘗試訪問JSON對象加上2的長度的元素,這些元素不存在。

如果你只是想輸出的圖像,每個錶行中,然後執行以下操作:

var jsonObj = JSON.parse(http_request.responseText); 
var rows = ''; 
for(var i=0;i<jsonObj.length;i++) 
{ 
    rows += "<tr><td class='logo_sm'><img src='"+jsonObj[i].logo_sm+"'/></td></tr>"; 
} 

document.getElementsByTagName('table')[0].innerHTML += rows;