0

我有以下 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

2 回答 2

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';

在您的代码中(i 而不是 1)

第三,al不是form_infos的子对象,而是一个包含字符串的变量。要使用字符串索引访问子对象,请使用

form_infos[al]

代替

form_infos.al

就是这样

于 2012-07-31T10:23:00.517 回答
1

我会为此使用jQuery。例如:

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

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

jQuery 每个引用

于 2012-07-31T10:22:52.060 回答