Проблема в коде 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, время: 20:39. |