对于我的罪过,我不是一个全职的JavaScript实践者,但我正在努力.下面是我尝试的广告管理命名空间的简化版本,它使用Google标记API
slots
是一个由googletag.defineSlot(
返回的GPT插槽数组,设置在头部,通过将其推迟到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>');
});
}
...with是一个动态i
,因为当我调试它时,我看到不能像这样传递i
,只能传递一个硬编码的索引。
这在jQuery(document).ready(function() {
内部工作。
console.log('adManager.all_devices.button.slots[3].getSlotElementId());
这会导致未定义的错误:
console.log('adManager.all_devices.button.slots[i].getSlotElementId());
我曾经是reading (honest),但我很困惑。用温和的话说,这是怎么回事,我该怎么解决?
发布于 2018-10-17 14:28:01
你的结构不对。您需要附加一次ready
侦听器,然后在回调中执行循环。详情如下:
jQuery(document).ready(function() {
for (var i=0;i<slots.length;i++) {
jQuery('#ads').append('<div id="'+slots[i].getSlotElementId()+'"></div>');
}
});
https://stackoverflow.com/questions/52857248
复制相似问题