i ++ перешел из JavaScript для цикла в jQuery (документ) .ready (function () {не работает как динамический индекс при итерации по массиву - PullRequest
0 голосов
/ 17 октября 2018

За свои грехи я не практикующий JavaScript на полный рабочий день, но я пытаюсь.Вот упрощенная версия моего пространства имен для управления объявлениями, в котором используется API тегов издателя Google

slots - это массив слотов GPT, возвращаемый googletag.defineSlot(, установленный в заголовке, который пытается нацелить на div,существует только рендеринг HTML после CMS, откладывая его до jQuery.

Как я могу это сделать:

var i;
for (i=0;i<slots.length;i++) {
    jQuery(document).ready(function() { 
        jQuery('#ads').append('<div id="'+slots[i].getSlotElementId()+'"></div>');
    });
}

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

Это работает в jQuery(document).ready(function() {:

console.log('adManager.all_devices.button.slots[3].getSlotElementId());

Это вызывает неопределенные ошибки:

console.log('adManager.all_devices.button.slots[i].getSlotElementId());

Я читал (честно) , но я запутался.Проще говоря, что здесь происходит и как я могу это исправить?

1 Ответ

0 голосов
/ 17 октября 2018

У вас неправильная конструкция.Вам нужно подключить ready слушатель один раз, а затем внутри обратного вызова сделать ваш цикл.Как показано ниже:

  jQuery(document).ready(function() {
    for (var i=0;i<slots.length;i++) {
        jQuery('#ads').append('<div id="'+slots[i].getSlotElementId()+'"></div>');
    }
  });
...