i++ перешел из JavaScript для цикла в jQuery(документ).ready(function() {не работает как динамический индекс при итерации по массиву
Из-за своих грехов я не практикующий 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 ответ
У вас неправильная конструкция. Вам необходимо приложить ready
слушатель один раз, а затем внутри обратного вызова сделать свой цикл. Как показано ниже:
jQuery(document).ready(function() {
for (var i=0;i<slots.length;i++) {
jQuery('#ads').append('<div id="'+slots[i].getSlotElementId()+'"></div>');
}
});