2015-05-13 146 views
0

我有一個JSON對象與此類似解析JSON對象動態地在javascript

{ 
    emp_name:'', 
    day1:'', 
    day2:'', 
    day3:'', 
    ..... 
    dayn:'' 
} 

我要動態地獲得這個值使用JavaScript,並在表中顯示它。以下是我想要做的。

for(var i = 0; i < 2; i++) 
{ 
    var row1 = body.insertRow(i); 
    var name = resultset[i].emp_name; 
    var cell1 = row1.insertCell(0); 

    cell1.innerHTML=name; 
    cell1.setAttribute('id', 'emp_name'); 

    for(var j = 1; j < 32; j++) 
    { 
    var cell2=row1.insertCell(j); 
    cell2.innerHTML = resultset[i].day + j; 
    } 
} 

但是第二個單元格值沒有被填充。我得到NaN。問題是因爲day + j。有人可以說如何解決這個問題嗎?

+0

你等同於哪個變量的JSON對象?你可以把你的整個代碼放入jsbin中並顯示嗎? – wallop

+2

你需要'resultset [i] ['day'+ j];'這個叫[括號表示法](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Property_accessors#Bracket_notation) – Grundy

+0

可能重複[動態訪問對象屬性使用變量](http://stackoverflow.com/questions/4244896/dynamically-access-object-property-using-variable) – Grundy

回答

3

據我所知,你想訪問的屬性,這是day{n},對不對?

如果是這樣,則必須改變

resultset[i].day+j; 

resultset[i]['day'+j]; 
+0

嗨,這是我期待。它是工作正常 –

0

你擁有的代碼是相同的(resultset[i].day) + j - 這意味着取(不存在的)day屬性的值從resultset[i],和將j添加到ID。這就是爲什麼你得到一個NaN

對子級,你應該做的是:

for(var j=1;j<32;j++){ 
     var cell2=row1.insertCell(j); 
     cell2.innerHTML=resultset[i]['day'+j]; 
} 
0

如果有一天,屬性或項目的數量變化,您可以循環在動態對象,而無需更改代碼:

for (i = 0, l=resultSet.length; i < l; i++) { 
    var row1 = body.insertRow(i); 
    var result = resultSet[i]; 
    var name = result.emp_name; 

    var keys = Object.keys(result); 
    for (var j = 1, m=keys.length; j < m; j++) { 
     var cell2 = row1.insertCell(j); 
     cell2.innerHTML = result[keys[j]]; 
    } 
} 
0

由於你也標記了jquery,我已經用jquery給出了答案。你可以使用jQuery的$.each函數來完成它。

$.each(jsonString,function(key,value){ 
//You can perform your operations here 
console.log(key+'=>'+value); 

}); 

點擊這裏查看更多信息jQuery.each