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