Проблема в коде Javascript в Google Tag Manager
Здравствуйте. Призываю на помощь всех, кому не сложно подсказать человеку-нубу.
Для меня javascript это как для многих это: Код:
他媽的挖Суть: У меня с помощью javascript передаются данные в google analytics ecommerce через GTM. Если товар равен четырехзначной сумме (1,299.00 рублей, например) - то в отчет передается корректное число. Но если стоимость товара трехзначная (например 990.00 рублей), то в отчет передается сумма в 99 рублей (т.е. первая цифра перед точкой пропадает). Если товар стоит 1.00 рубль - то передается сумма 0 рублей. Как я догадался путем танцев с бубном - проблема в javascripte, а именно в этом моменте:
'revenue': document.getElementById('tt_total_basket').textContent.replace(',', '').substr(0, document.getElementById('tt_total_basket').textContent.indexOf('.')-1)
Что то в этом коде убивает мои цифры, но я вообще не могу понять что. Цены на сайте выглядят следующим образом: 3,990.00 (тысячи отделены запятой, копейки точкой). Друзья, ткните пальцем, пожалуйста, в чем тут соль? |
соль: убрать
.substr(0, document.getElementById('tt_total_basket').textContent.indexOf('.')-1)
пример как можно делать.
var a = '1,299.00', b = '990.00';
var r1 = (+a.replace(',', '')).toFixed(0);
var r2 = (+b.replace(',', '')).toFixed(0);
alert("r1: " + r1 + " ,r2: " + r2);
|
Diazz,
'revenue': +document.getElementById('tt_total_basket').textContent.replace(',', '')
|
Цитата:
Спасибо вам друзья за то что откликнулись |
Я убрал фрагмент, который вы сказали - не помогло.
Возможно проблема находится в другом месте? Вот полный код:
function() {
var i, l, j=0;
var Name =[];
var Price=[];
var sku=[];
var quantit=[];
var prod=[];
var a = document.getElementsByName('quantity'), i = a.length;
while(i--){
quantit[j]= a[i].getAttribute('value');
Price[j]= a[i].parentNode.parentNode.previousElementSibling.firstElementChild.textContent.replace(',', '').substr(0, a[i].parentNode.parentNode.previousElementSibling.firstElementChild.textContent.indexOf('.')-1);
sku[j]= a[i].parentNode.parentNode.previousElementSibling.previousElementSibling.textContent;
Name[j]=a[i].parentNode.parentNode.previousElementSibling.previousElementSibling.previousElementSibling.firstElementChild.textContent;
prod.push({
'id': sku[j],
'name': Name[j],
'price': Price[j],
'quantity': Number(quantit[j])
}
)
}
var d = new Date();
var n = d.getTime();
var ecommerceData = {
'ecommerce': {
'purchase': {
'actionField': {
'id': n,
'affiliation': 'FanCart',
'revenue': document.getElementById('tt_total_basket').textContent.replace(',', '').substr(0, document.getElementById('tt_total_basket').textContent.indexOf('.')-1)
},
'products': prod
}
}
}
return ecommerceData;
}
Спасибо заранее |
Цитата:
и еще в 16 строке у вас тот же баг
Price[j]= +a[i].parentNode.parentNode.previousElementSibling.firstElementChild.textContent.replace(',', '');
|
| Часовой пояс GMT +3, время: 00:14. |