2012-07-31 176 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