Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   нужно сделать разделитель к тысячам в сумме (https://javascript.ru/forum/css-html/67060-nuzhno-sdelat-razdelitel-k-tysyacham-v-summe.html)

heslik 25.01.2017 21:54

нужно сделать разделитель к тысячам в сумме
 
Здравствуйте, у меня на сайте есть элемент с id - tt_total там считается общая сумма, и выводится она например как 10000, а нужно чтобы был пробел в тысячах и было так - 10 000 , ниже функция где это все считается, почитав в инете форумы и книги нашел что возможно поможет добавление строки
обьект.replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, '$1 ');
но как я не пробовал ее туда добавить не помогает..
if ((op_show_only_total != null) && (op_show_only_total == true))
    {
    	 stru = document.getElementById('tt_total_txt')
		 if (stru != null)
		 str = srtu.innerHTML;
		 else str = ''; 
    	 if (str == '')
		 {
         d1 = document.getElementById('tt_total_txt'); 
		 if (d1 != null)
		 d1.innerHTML = op_textinclship;
		 }
         if ((op_custom_tax_rate != null) && (op_add_tax != null) && (op_custom_tax_rate != '') && (op_add_tax == true))
         {
          d1 = document.getElementById('tt_total'); 
		  if (d1 != null)
		  d1.innerHTML = Onepage.formatCurrency((1+parseFloat(op_custom_tax_rate))*parseFloat(order_total));
		  /*d1.innerHTML = d1.innerHTML.replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, '$1 ');*/ возможно полный бред, но пытался как мог.. 
         }
         else
		 {
    	 d1 = document.getElementById('tt_total'); 
		 if (d1 != null)
		 d1.innerHTML = Onepage.formatCurrency(order_total);
		 /*d1.innerHTML = d1.innerHTML.replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, '$1 ');*/ возможно полный бред, но пытался как мог..
		 }
		 
	     d1 = document.getElementById('tt_order_payment_discount_before_div'); 
		 if (d1 != null)
		 d1.style.display = "none";
		 d1 = document.getElementById('tt_order_discount_before_div'); 
		 if (d1 != null) d1.style.display = "none";	
		 d1 = document.getElementById('tt_order_subtotal_div'); 
		 if (d1 != null) d1.style.display = 'none';
		 d1 = document.getElementById('tt_shipping_rate_div'); 
		 if (d1 != null) d1.style.display = 'none';
		 d1 = document.getElementById('tt_shipping_tax_div'); 
		 if (d1 != null) d1.style.display = 'none';
		 return true;
    }

TestUser013 25.01.2017 22:34

var str = "3830010";
alert(str.replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, '$1 '));

heslik 25.01.2017 22:37

Цитата:

Сообщение от TestUser013 (Сообщение 442315)
var str = "3830010";
alert(str.replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, '$1 '));

спасибо за ответ, это я и находил, но как это прикрутить к этому:
d1.innerHTML = Onepage.formatCurrency((1+parseFloat(op_custom_tax_rate))*parseFloat(order_total));
?

heslik 25.01.2017 23:13

попробовал так -
var ddd;
		 
         if ((op_custom_tax_rate != null) && (op_add_tax != null) && (op_custom_tax_rate != '') && (op_add_tax == true))
         {
          d1 = document.getElementById('tt_total'); 
		  if (d1 != null)
		  ddd = Onepage.formatCurrency((1+parseFloat(op_custom_tax_rate))*parseFloat(order_total));
	      d1.innerHTML = ddd.replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, '$1 ');		  
         }
         else
		 {
    	 d1 = document.getElementById('tt_total'); 
		 if (d1 != null)
		 ddd = Onepage.formatCurrency(order_total);
		 d1.innerHTML = ddd.replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, '$1 ');		 
		 }

но не работает.. вот весь файл https://yadi.sk/d/QJWGfJRu3Au9ug , в общем первому кто поможет скину бакс на вебмани.. понимаю что не много, но все же пусть будет бонусом..

Dilettante_Pro 26.01.2017 12:02

heslik,
Попробовал вот такой макетик
<!DOCTYPE html>
<html>
<head>
    <script type="text/javascript" src="scripts/onepage.js"></script>

</head>
<body>
   <div id='d1'></div>
</body>
    <script>
        var op_vendor_style = "";
        var op_no_decimals = true;
        var op_curr_after = false;
        var op_currency = "$";
        var order_total = 10000;
        var ddd = Onepage.formatCurrency(order_total);
        d1.innerHTML = ddd.replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, '$1 ');
    </script>
</html>

Все работает ОК, рисует $ 10 000

Dilettante_Pro 26.01.2017 12:52

С таким же результатом работает вот такой вариант
<!DOCTYPE html>
<html>
<head>
    <script type="text/javascript" src="scripts/onepage.js"></script>
</head>
<body>
   <div id='d1'></div>
</body>
    <script>
        var op_vendor_style = "|||| |||";
        var op_no_decimals = true;
        var op_curr_after = false;
        var op_currency = "$";
        var order_total = 10000;
        d1.innerHTML = Onepage.formatCurrency(order_total);
     </script>
</html>

ksa 26.01.2017 13:33

Цитата:

Сообщение от heslik
но как это прикрутить к этому:
d1.innerHTML = Onepage.formatCurrency((1+parseFloat(op_custom_tax_rate))*parseFloat(order_total));

Так и прикрутить... :)

var val=(1+parseFloat(op_custom_tax_rate))*parseFloat(order_total)
val=(''+val).replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, '$1 ');
d1.innerHTML = Onepage.formatCurrency(val);

ksa 26.01.2017 13:34

Цитата:

Сообщение от heslik
в общем первому кто поможет скину бакс на вебмани..

Я пиво покупаю у приятеля за 80р бутылка... :D
Жуть какая-то творится в стране. :(

Dilettante_Pro 26.01.2017 14:09

ksa,
Как показывает проверка onepage.js, прикручивать ничего не надо - он и сам так умеет, только скажи... (см. пост 6)

ksa 26.01.2017 14:17

Цитата:

Сообщение от Dilettante_Pro
прикручивать ничего не надо - он и сам так умеет, только скажи

Значит пусть отправляет свой бакс разработчикам... :D


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