首页 > 解决方案 > i++ 从 JavaScript for 循环传递到 jQuery(document).ready(function() { 在遍历数组时不能用作动态索引

问题描述

对于我的罪过,我不是一个全职的 JavaScript 实践者,但我正在努力。这是我尝试使用 Google Publisher Tag API 的广告管理命名空间的简化版本

slots是由返回的 GPT 插槽数组googletag.defineSlot(,设置在头部中,它尝试通过将其推迟到 jQuery 来定位仅存在于 CMS 后 HTML 呈现的 div。

我怎样才能做到这一点:

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

...使用 dynamic i,因为当我一直在调试它时,我发现我不能i像这样通过,只能通过硬编码的索引。

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

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

这会导致未定义的错误:

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

我一直在阅读(诚实),但我很困惑。温和地说,这里发生了什么,我该如何解决?

标签: javascriptjquerynamespacesgptgoogle-publisher-tag

解决方案


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

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

推荐阅读