Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.10.2015, 20:22
Новичок на форуме
Отправить личное сообщение для Diazz Посмотреть профиль Найти все сообщения от Diazz
 
Регистрация: 14.10.2015
Сообщений: 3

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

Друзья, ткните пальцем, пожалуйста, в чем тут соль?
Ответить с цитированием
  #2 (permalink)  
Старый 15.10.2015, 07:50
Аватар для join
Профессор
Отправить личное сообщение для join Посмотреть профиль Найти все сообщения от join
 
Регистрация: 05.03.2012
Сообщений: 477

соль: убрать
.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);
Ответить с цитированием
  #3 (permalink)  
Старый 15.10.2015, 08:03
Аватар для sanmihan
Аспирант
Отправить личное сообщение для sanmihan Посмотреть профиль Найти все сообщения от sanmihan
 
Регистрация: 28.05.2015
Сообщений: 54

Diazz,
'revenue': +document.getElementById('tt_total_basket').textContent.replace(',', '')
Ответить с цитированием
  #4 (permalink)  
Старый 15.10.2015, 10:11
Новичок на форуме
Отправить личное сообщение для Diazz Посмотреть профиль Найти все сообщения от Diazz
 
Регистрация: 14.10.2015
Сообщений: 3

Сообщение от sanmihan Посмотреть сообщение
Diazz,
'revenue': +document.getElementById('tt_total_basket').textContent.replace(',', '')
Меняю тот кусок кода на этот - этого будет достаточно?

Спасибо вам друзья за то что откликнулись
Ответить с цитированием
  #5 (permalink)  
Старый 15.10.2015, 16:16
Новичок на форуме
Отправить личное сообщение для Diazz Посмотреть профиль Найти все сообщения от Diazz
 
Регистрация: 14.10.2015
Сообщений: 3

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

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

Спасибо заранее
Ответить с цитированием
  #6 (permalink)  
Старый 16.10.2015, 06:37
Аватар для sanmihan
Аспирант
Отправить личное сообщение для sanmihan Посмотреть профиль Найти все сообщения от sanmihan
 
Регистрация: 28.05.2015
Сообщений: 54

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

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с Javascript в компоненте RS Form!Pro bowa Общие вопросы Javascript 0 12.03.2012 17:09
Проблема с копированием сайта с JavaScript Tuhlom Events/DOM/Window 1 27.10.2011 14:10
Google API, проблема с Chrome gurun Общие вопросы Javascript 1 22.08.2011 13:17
Проблема с load в div и импортом стороннего кода с помощью javascript 1quick1 Events/DOM/Window 9 04.02.2011 13:16
Проблема с javascript:; sergikm23 Элементы интерфейса 6 17.07.2009 13:41