2017-05-03 59 views
0

Imt判斷循環返回的一些JSON數據,如果返回的值是每個html元素的attr,則將「checked」複選框添加到複選框,但這會一直拋出錯誤。Jquery循環遍歷JSON每個對象返回錯誤

$('.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); 
      } 
     } 
    }); 
}); 

它引發錯誤「遺漏的類型錯誤:無法讀取屬性 '用戶ID' 的未定義」

上,如果多數民衆贊成statmenet確保.userID == NULL

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'從迭代器回調中?你可以簡單地使用'value'來代替。 – DarthJDG

+1

我可能是錯的,但它看起來像在'0:null'和'VARS'之間有一個數組。所以也許'value [index] [index]!== null)'? –

+1

另外,檢查'value!== null'將不會捕獲'undefined'。 – DarthJDG

回答

1

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