Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在提交表单之前返回单击计数_Javascript_Jquery_Google Datalayer - Fatal编程技术网

Javascript 在提交表单之前返回单击计数

Javascript 在提交表单之前返回单击计数,javascript,jquery,google-datalayer,Javascript,Jquery,Google Datalayer,在票务页面上,我试图跟踪添加到购物车的票务的点击量,以便将值传递到Google Tag Manager数据层。我编写了以下函数: // Increment/subtract count on user click function updatef1a2cCounter(count) { var count = 0; $('.ticketf12c .add-amount').click(function () { count++; }); $('ti

在票务页面上,我试图跟踪添加到购物车的
票务的点击量,以便将值传递到Google Tag Manager数据层。我编写了以下函数:

// Increment/subtract count on user click
function updatef1a2cCounter(count) {
    var count = 0;
    $('.ticketf12c .add-amount').click(function () {
        count++;
    });
    $('ticketf12c .subtract-amount').click(function () {
        count--;
    });

    return count;
}

// Get and return current count. Push to dataLayer
$('.test-submit-button').click(function (e) {
    e.preventDefault();
    console.log(updatef1a2cCounter());

    dataLayer.push({
        'event': 'productDetail',
        'ecommerce': {
            'detail': {
                // Family tickets   
                'products': [{
                    'name': 'Ticket Type Name Goes here',
                    'id': '',
                    'price': '100.00',
                    'brand': 'Some Brand',
                    'category': 'Ticket',
                    'quantity': updatef1a2cCounter()
                }]                    
            }
        }
    });

});

当有人加、减和项目时,我的点击事件计数器工作正常,但当我点击提交按钮时,计数总是返回
0
。你知道我在这里做错了什么吗?

删除函数
updatef1A2Counter
。将下面的代码移到外部
updateF1A2Counter
。并直接使用
count
而不是
updateF1A2Counter()

下面是完整的代码

// Increment/subtract count on user click
var count = 0;
$('.ticketf12c .add-amount').click(function() {
  count++;
});
$('.ticketf12c .subtract-amount').click(function() {
  count--;
});

// Get and return current count. Push to dataLayer
$('.test-submit-button').click(function(e) {
  e.preventDefault();
  console.log(count);

  dataLayer.push({
    'event': 'productDetail',
    'ecommerce': {
      'detail': {
        // Family tickets   
        'products': [{
          'name': 'Ticket Type Name Goes here',
          'id': '',
          'price': '100.00',
          'brand': 'Some Brand',
          'category': 'Ticket',
          'quantity': count
        }]
      }
    }
  });

});

我有点击事件计数器正常工作时,有人加,减和项目


我确信您的单击事件将无法工作,除非您从其他地方调用了
updatef1a2cCounter()
。单击“提交”按钮后,它将开始工作。同样,在
updatef1a2cCounter()
的初始行中使用
var count=0
,然后使用
return count
因此每次您将事件处理程序添加到
$('.ticketf12c.add amount')
时,它总是返回
0

单击
$('.test submit按钮')
-然后返回在开头设置的0

此外,您在
选择器中缺少一个点。此处的ticketf12c
选择器:

$('.ticketf12c.subtract amount')。单击(函数(){

你可能想用

'quantity': count
并在页面加载上添加事件处理程序,如下所示:

let count=0;
$(函数(){//在页面加载时)
$('.ticketf12c.add amount')。单击(函数(){
计数++;
});
$('.ticketf12c.subtract amount')。单击(函数(){
count--;//您可能想在这里测试负数?
});
//获取并返回当前计数。推送到数据层
$('.test submit按钮')。单击(函数(e){
e、 预防默认值();
控制台日志(计数);
数据层推送({
“事件”:“产品详细信息”,
“电子商务”:{
“细节”:{
//家庭票
“产品”:[{
'名称':'票证类型名称在此处',
“id”:“,
“价格”:“100.00”,
“品牌”:一些品牌,
“类别”:“票证”,
“数量”:计数//不需要函数
}]
}
}
});
});
});

每次单击$('.test submit按钮')时,您都在将事件处理程序添加到$('.ticketf12c.add amount')-然后您将返回0,因为您的ticketf12c单击事件处理程序未触发。您的选择器中也缺少一个点
。ticketf12c。减去金额
@mplungjan谢谢。眼睛疲劳,没有看到这一点!但错过了一个输入错误。:/mplungjan,感谢指出。更新了答案。我想我不应该浪费时间在回答之前,先回答OP的原始问题。。。。
'quantity': count