2017-02-21 22 views
1

У меня есть функция, которая является циклом сама по себе и в этом цикле я создаю объект. Но когда после цикла я пытаюсь получить доступ к свойствам объекта, я получаю ответ неопределенного.Javascript: Свойства объекта undefined (очень конкретный случай)

Когда я пытаюсь просто console.log самого объекта, я получаю его. Проблема связана со свойствами.

Я был бы признателен, если бы кто-то мог мне помочь. Я сделал хорошее исследование, но не смог найти решение. Мое дело очень странно. Все хорошо, кроме свойств. Мне нужна помощь старших разработчиков.

Вот код.

var countMap = {}; 
    var counter = 0; 
    $('#share_table_body').find('.js-post').each(function() { 
    var totalCount = 0; 
    $(this).find('.js-social').each(function() { 
     var $this = $(this); 
     var socialType = $(this).data('social-type'); 
     var url = $this.closest('.js-post').data('url'); 
     getShareStatus(url, socialType) 
     .then(function (shareCount) { 
      $this.text(shareCount); 

      if (!countMap[socialType]) { 
      countMap[socialType] = 0; 
      } 
      if (!countMap['total']) { 
      countMap['total'] = 0; 
      } 

      countMap[socialType] += shareCount; 

      totalCount += shareCount; 

      countMap['total'] += shareCount; 

      $this.siblings('.js-total').text(totalCount); 
     }) 
     .fail(function (err) { 
      $('.error-notice').removeClass('hidden'); 
      $this.css('color', 'red').text('!'); 
     }); 
    }); 
    counter++; 
    }); 
    if (counter == $('#share_table_body').find('.js-post').length) { 
    console.log(countMap); 
    $('.total-facebook').text(countMap['facebook']); 
    } 
+0

'getShareStatus' содержит асинхронную функцию – Beginner

+0

Этот вопрос является дубликатом, да, но лучше ответил [Почему моя переменная неизменна после изменения ее внутри функции?] (Http://stackoverflow.com/questions/ 23667086), чем на вопрос, упомянутый в официальном уведомлении о дублировании. –

ответ

0

Вы ничего не возвращаете из своей функции? Конкретно ...

return countMap;

+0

Нет, я пытаюсь получить доступ к функции countMap внутри функции, после проверки того, что цикл завершен. console.log (countMap) печатает мой вывод нормально. Но $ ('. Total-facebook'). Text (countMap ['facebook']) не работает. –

 Смежные вопросы

  • Нет связанных вопросов^_^