i++ 从 JavaScript for 循环传递到 jQuery(document).ready(function() { 在遍历数组时不作为动态索引

i++ passed from JavaScript for loop to jQuery(document).ready(function() { not working as dynamic index when iterating over the array

由于我的罪过,我不是全职 JavaScript 从业者,但我正在努力。这是我尝试使用 Google 发布商标签 API

的广告管理命名空间的简化版本

slotsgoogletag.defineSlot( 返回的 GPT 插槽数组,设置在头部,它试图定位仅存在的 div post-CMS HTML 渲染通过将其推迟到 jQuery.

我该怎么做:

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

...with a dynamic i, 因为我在调试的时候发现不能像这样通过i, 只能通过一个hard-编码索引。

这适用于 jQuery(document).ready(function() {:

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

这会导致未定义的错误:

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

我已经 reading (honest) 但我很困惑。客气地说,这是怎么回事,我该如何解决?

你的构造有误。您需要附加 ready 侦听器一次,然后在回调内部执行循环。如下:

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