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

あなたのコードで(1の代わりにi)

3 番目に、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 に答える