2017-05-03 9 views
0

返されるJSONデータをループして返され、返された値がそれぞれhtml要素attrにある場合、チェックボックスに「checked」を追加してもエラーはスローされます。JSON上のJQueryループ各オブジェクトがエラーを返す

$('.varUserSettingTable tr').each(function(index, el) { 
    var $this = $(this); 
    $.each(curdata.VarUserDetails.VARS, function(index, value) { 
     if (curdata.VarUserDetails.VARS[index] !== null) { 
      if ($this.find('.SettingCheckbox').attr('name') === curdata.VarUserDetails.VARS[index].userID) { 
       $this.find('.SettingCheckbox').prop('checked', true); 
      } 
     } 
    }); 
}); 

そのエラー"キャッチされない例外TypeError:未定義の 'ユーザーIDを' プロパティを読み取ることができません" 投げに

statmenetかの確認.userID == nullのに作るのthats

VarUserDetails: Object 
VARS:Array[1024] 
    [0 … 99] 
     0:null 
     1:null 
     2:Object 
      userChecked:1 
      userID:"2" 
      __proto__:Object 
     3:Object 
      userChecked:1 
      userID:"3" 
      __proto__:Object 
     ... 
     ... 
+1

なぜあなたはイテレータのコールバック内から '' curdata.VarUserDetails.VARS [インデックス]を読んでいますか?代わりに単に 'value'を使うことができます。 – DarthJDG

+1

私は間違っているかもしれませんが、 '0:null'と' VARS'の間に配列があるようです。だからおそらく 'value [index] [index]!== null)'? –

+1

また、 'value!== null'をチェックすると' undefined'がキャッチされません。 – DarthJDG

答えて

1

value自体が配列の項目です。使用valueをしようとする代わりに、curdata.VarUserDetails.Vars[index]

$('.varUserSettingTable tr').each(function(index, el) { 
var $this = $(this); 
$.each(curdata.VarUserDetails.VARS, function(index, value) { 
    if (value !== null) { 
     if ($this.find('.SettingCheckbox').attr('name') === value.userID) { 
      $this.find('.SettingCheckbox').prop('checked', true); 
     } 
    } 
}); 
+0

完璧!より効率的であり、5分タイマーの後に質問を与えます – Charles

関連する問題