2012-07-31 169 views
0

我有以下JSON對象:迭代JSON對象

{ 
    "a1_1_on" : "on", 
    "a1_1_thr" : "", 
    "a1_2_on" : "on", 
    "a1_2_thr" : "", 
} 

,我想用一個for循環來檢查領域,例如:

for (var i=1; i<2; i++) { 
    //alarm 
    var al = 'ai_' + i + '_on'; 
    //alarm threshold 
    var althr = 'ai_' + i + '_thr' 

    //console.log(form_infos.al); 

    if(form_infos.al == "on" && form_infos.althr == "") { 
     alert("Alarm for Analog " + i + "is on and you did not specified a threshold. Please specify a threshold before submittiing"); 
     return false; 
    } 
} 

但它顯示undefined,如果我做console.log(form_infos.al)。有什麼建議麼?

+4

這是** **不JSON對象。 – 2012-07-31 10:13:11

+1

@RoyiNamir - 既不是,因爲它是無效的。 '='字符應該是冒號。 – 2012-07-31 10:13:31

+0

@JamesAllardice是的。 (沒注意到,我開始發現它根本不是字符串) – 2012-07-31 10:13:46

回答

3

有在你的代碼的幾個錯誤。

首先,在JSON「:」是鍵和值之間使用,所以它必須是

{ 
    "a1_1_on": "on", 
    "a1_1_thr": "", 
    "a1_2_on": "on", 
    "a1_2_thr": "", 
} 

由這不是JSON的方式,但一個簡單的JavaScript對象。 JSON將是該對象的字符串表示形式。

,您的字符串來索引的元素有一個錯字,在你的對象有

"a1..." 

,但你在代碼中使用

var al = 'ai_' + i + '_on'; 

(的我,而不是1)

第三,al不是form_infos的子對象,而是包含字符串的變量。要訪問的子對象具有字符串索引使用的

form_infos[al] 

代替

form_infos.al 

就是這樣

+1

第二個這篇文章的一部分給出了正確的答案。 – 2012-07-31 10:24:24

1

我會爲此使用jQuery。例如:

var obj = { 
    "a1_1_on" : "on", 
    "a1_1_thr" : "", 
    "a1_2_on" : "on", 
    "a1_2_thr" : "" 
} 

$.each(obj,function(i,value) { 
    ... 
}); 

jQuery each reference