Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Проблема в коде Javascript в Google Tag Manager (https://javascript.ru/forum/events/58869-problema-v-kode-javascript-v-google-tag-manager.html)

Diazz 14.10.2015 20:22

Проблема в коде 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 (тысячи отделены запятой, копейки точкой).

Друзья, ткните пальцем, пожалуйста, в чем тут соль?

join 15.10.2015 07:50

соль: убрать
.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);

sanmihan 15.10.2015 08:03

Diazz,
'revenue': +document.getElementById('tt_total_basket').textContent.replace(',', '')

Diazz 15.10.2015 10:11

Цитата:

Сообщение от sanmihan (Сообщение 392012)
Diazz,
'revenue': +document.getElementById('tt_total_basket').textContent.replace(',', '')

Меняю тот кусок кода на этот - этого будет достаточно?

Спасибо вам друзья за то что откликнулись

Diazz 15.10.2015 16:16

Я убрал фрагмент, который вы сказали - не помогло.
Возможно проблема находится в другом месте? Вот полный код:

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;
}

Спасибо заранее

sanmihan 16.10.2015 06:37

Цитата:

Сообщение от Diazz
Я убрал фрагмент, который вы сказали - не помогло.

странно, но в приведенном коде вы ничего не убрали.

и еще в 16 строке у вас тот же баг
Price[j]= +a[i].parentNode.parentNode.previousElementSibling.firstElementChild.textContent.replace(',', '');


Часовой пояс GMT +3, время: 11:18.