Javascript 如何更新数据层变量?

Javascript 如何更新数据层变量?,javascript,google-analytics,google-tag-manager,google-datalayer,Javascript,Google Analytics,Google Tag Manager,Google Datalayer,我们首先将包含变量的对象推送到数据层: dataLayer.push({ 'environment': { 'userName': 'abc', 'id': 123, 'clicks': 0 } }); 我们现在希望增加环境的价值。用户每次单击都会单击。 怎么做?当我们推动它通过 dataLayer.push({ 'environment': { 'clicks': 123 } }); 数据层阵列

我们首先将包含变量的对象推送到数据层:

dataLayer.push({
    'environment': {
        'userName': 'abc',
        'id': 123,
        'clicks': 0
    }
});
我们现在希望增加
环境的价值。用户每次单击都会单击
。
怎么做?当我们推动它通过

dataLayer.push({
    'environment': {
        'clicks': 123
    }
});

数据层阵列可能会获得10.000个条目。如何正确更新变量?

更新数据层变量的方法是在“本机”GTM事件发生时或在自定义事件旁边推送变量。所以基本上你是对的

至于您担心DL可能会得到许多条目,数据层在任何情况下每次单击都会得到一个新条目(GTM本身也添加了这一点),因此变量的附加条目可能没有那么重要

如果仍然希望避免这种情况,可以更新一个全局Javascript变量,并在GTM中使用它。Google Tag Manager可以访问页面上的所有变量(您仍然可以获得数据层中的所有单击事件)

数据层还有一个
set
方法,允许您直接向数据层写入数据,这显然是您要寻找的。您需要获取GTM实例,然后可以设置值:

 var gtm = window.google_tag_manager[{{Container ID}}];
     gtm.dataLayer.set('balloonsPopped', undefined);
详细信息如此处所示。您可以在自定义HTML标记中使用它来更新单击计数,然后单击事件触发您的标记

数据层也会在页面加载时重置。要想在每个页面浏览中获得10000次点击,需要一个非常棒的单页应用程序


这是谷歌分析。如果你计划跟踪GA中的点击次数,请记住,GA会话在点击500次后过期,因此结果可能不是你所期望的(而且免费版本每月只有1000万次点击,点击跟踪将很快耗尽)。如果你想在GA中跟踪点击次数,那么你需要一个事件或其他东西来跟踪点击,因此事件的数量基本上就是你要寻找的指标,或者你可以创建一个自定义指标,并在GA调用中将其设置为“1”(意味着每次调用它都会增加1)。

你不能使用一个保持器吗?比如:

var click_value_holder = dataLayer.environment.clicks;
dataLayer.push({
  'environment': {
    'clicks': (click_value_holder + 1)
  }
});
引述:

需要注意的是,将与现有变量同名的变量推送到数据层将导致现有值被新值覆盖


只需推送一个具有相同变量名和更新值的条目就可以了。

有趣的是,它被标记为“google数据层”,而不是“google标记管理器”。这是故意的吗?没有GTM,数据层只是一个javascript数组,GTM通过新方法或对现有JS方法的修改添加了特殊的魔力。如果您使用的是GTM,那么最好添加适当的标记。这是真正的答案,尽管了解“set”方法也很好:)加上一个用于引用TFM的标记。