2016-11-24 4 views
1

Я заполняю массив объектами с функцией push(). Затем я передаю в качестве параметра функцию customTimer в конце, когда я нахожусь в функции customTimer, пытающейся получить доступ к этим ячейкам массива, но я не могу. я попробовал несколько вещей, как refObjArr[0],refObjArr["0"] и т.д. Когда я пытаюсь console.log("qweqew",typeof refObjArr) он возвращает объект, и я попытался console.log("Array : ",arr) я могу видеть объекты, но я не могу получить доступ в любом случаеНе удается получить доступ к массиву объектов

Objects

когда Im используя JQuery makeArray() function

var arr = $.makeArray(refObjArr) 
console.log("custom Timer -> refObjArr : ", refObjArr) 
console.log("custom Timer -> type arr: ", typeof arr) 
console.log("custom Timer -> arr: ", arr) 
console.log("is Array " + jQuery.isArray(arr)); 

это дает мне верно, но я до сих пор не может Асесс

UPDATE:.

for (var i = 0; i < detayBodyArray.length; i++) { 
    $.ajax({ 
     type: "GET", 
     url: apiAdress + '/api/Gosterge/defParameters?ekrandetayId=' + detayId[i] + '&bodyIdIndex=' + i, 
     dataType: "json", 
     success: function (veri) { 
      n = detayId.indexOf(veri[2].ekrandetayId); 
      setRefObj[n] = {}; 

      setRefObj[n].yS = parseInt(veri[2].value); 
      setRefObj[n].kS = parseInt(veri[2].value); 
      setRefObj[n].ekrandetayId = detayId[veri[2].index] 
      setRefObj[n].bodyId = bodyId[n]; 
      setRefObj[n].gostergeTip = tip[n]; 
      setRefObj[n].gostergeUrl = url[n]; 
      setRefObj[n].gostergeUrlTip = urlTipi[n]; 
     }, 
     error: function (msg) { 
      alert(msg.responseText); 
     }, 
     beforeSend: function (xhr, settings) { xhr.setRequestHeader('Authorization', 'Bearer ' + token); } 
    }); 
    if (i === detayBodyArray.length - 1) { 
     customTimer(); 
    } 
} 

detayBodyArray из другого FUNC, refObjArr глобальный массив

+2

'refObjArr [0]' должен работать. Нам нужно больше узнать о вашем коде, чтобы помочь вам - в частности, как вы создаете массив и как передать его функции –

+0

Попробуйте воспроизвести свою проблему внутри рабочего фрагмента – Weedoze

+1

Это комбинация [Почему моя переменная неизменна после Я изменяю его внутри функции? - Ссылка на асинхронный код] (http://stackoverflow.com/questions/23667086/why-is-my-variable-unaltered-after-i-modify-it-inside-of-a-function-asynchron) и [как Chrome отображает массивы в консоли] (http://stackoverflow.com/questions/4057440/is-chromes-javascript-console-lazy-about-evaluating-arrays) – JJJ

ответ

1

Я решить эту проблему с другим способом. Я создал простой класс, как этот

class refIndicator { 

     constructor(ekrandetayId, bodyId, gostergeTip, gostergeUrl, gostergeUrlTip, yS, kS) { 
      this.ekrandetayId = ekrandetayId 
      this.bodyId = bodyId 
      this.gostergeTip = gostergeTip 
      this.gostergeUrl = gostergeUrl 
      this.gostergeUrlTip = gostergeUrlTip 
      this.yS = yS 
      this.kS = kS 
     } 
    } 

затем заполнить создан и заполнить ссылку в Ajax запроса затем нажмите на глобальный массив, и она работает.

 for (var i = 0; i < detayBodyArray.length; i++) { 
       $.ajax({ 
        type: "GET", 
        url: apiAdress + '/api/blabla/bla/ekrandetayId=' + detayId[i], 
        dataType: "json", 
        success: function (veri) { 
         n = detayId.indexOf(veri[2].ekrandetayId); 
         setRefObj = new refIndicator(detayId[veri[2].index], bodyId[n], tip[n], url[n], urlTipi[n], parseInt(veri[2].value), parseInt(veri[2].value)); 
refObjArr.push(setRefObj) 
         if (refObjArr.length === detayBodyArray.length - 1) { 
          customTimer() 
         } 
        }, 
        error: function (msg) { 
         alert(msg.responseText); 
        }, 
        beforeSend: function (xhr, settings) { xhr.setRequestHeader('Authorization', 'Bearer ' + token); } 
       }); 

      } 



    function customTimer() { 
     console.log("custom Timer -> refObjArr : ", refObjArr[2]) 
     console.log("custom Timer -> refObjArr kS : ", refObjArr[2].kS) 
     console.log("custom Timer -> refObjArr edId : ", refObjArr[2].ekrandetayId) 
     console.log("custom Timer -> refObjArr bId : ", refObjArr[2].bodyId) 
     console.log("custom Timer -> refObjArr gTip : ", refObjArr[2].gostergeTip)} 
Смежные вопросы