Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Точку в запятую (https://javascript.ru/forum/dom-window/72805-tochku-v-zapyatuyu.html)

ureech 27.02.2018 14:46

Точку в запятую
 
Привет.
$.ajax({
  method: 'GET',
  url: '/components/shop/ajax.php',
  success: function(response) {
  var bax = response;
  $('.price').each(function () {
	 var span = $(this).find('span');
	 var baks = span.text();// здесь не просто число, а строка вида "от 199.25"
	 baks = baks.match(/\d+/g);
	 if(baks != 0){

	 }
	  console.log(baks):
       //Array [ "160", "990" ]
       //Array [ "45", "990" ]

	  })
    }
 
});

Как мне теперь из этого получить нормальные числа и вместо запятой точку?
Пытался сначала join а потом parseFloat ничего не выходит

j0hnik 27.02.2018 14:53

alert(['160', '990'].join('.'));


сепаратор видимо не указали

ureech 27.02.2018 15:05

Вот почему то не работает. Пишет в консоле, что baks is null, а алерт вообще не выводит

laimas 27.02.2018 15:06

Цитата:

Сообщение от ureech
 baks = baks.match(/\d+/g);

А зачем так вообще поступать? parseFloat() что не даст ожидаемого?

j0hnik 27.02.2018 15:10

console.log(baks):

что за двоеточие?

ureech 27.02.2018 15:11

Выводит NaN(parseFloat)

ureech 27.02.2018 15:12

Цитата:

Сообщение от j0hnik (Сообщение 479321)
console.log(baks):

что за двоеточие?

опечатка

laimas 27.02.2018 15:13

Цитата:

Сообщение от ureech
Выводит NaN

alert(parseFloat("199.25"))

ureech 27.02.2018 15:15

Я же написал в коде, там не только число. Там "от 152.25руб"

laimas 27.02.2018 15:17

Цитата:

Сообщение от ureech
Я же написал в коде, там не только число. Там "от 152.25руб"

НУ так шаблон рег. выражения соответствующий укажите, либо удалите из строки все что не \d\., а затем parseFloat() к результату.

ureech 27.02.2018 15:22

laimas,
Стратегия мне понятна), но я в js не очень,Это у меня часть вспомогательного кода к php. И разбираться пока нет времени, потому и прошу помочь.)

laimas 27.02.2018 15:31

И для чего эта проверка?

ureech 27.02.2018 15:39

На сайте указаны цены товара. Их нужно получить и произвести с ними арифметические действия. Они будут меняться в зависимости от курса.

Nexus 27.02.2018 15:42

alert(parseFloat('от 152.25руб'.replace(/[^\d\.]/g,'')));

laimas 27.02.2018 15:45

Цитата:

Сообщение от ureech
На сайте указаны цены товара. Их нужно получить и произвести с ними арифметические действия. Они будут меняться в зависимости от курса.

Значит негоже запрашивать цены товара отдельным запросом, а тем более возвращать их как "от ....". Помещайте цены сразу на страницу при ее запросах, что можно сделать, помещая их в атрибуты полей, которые и будут операндами в операциях расчета.

ureech 27.02.2018 15:46

Nexus,
Да, так работает. Спасибо. Спасибо всем.)

laimas 27.02.2018 15:47

Цитата:

Сообщение от ureech
Да, так работает.

Так быть не должно, это плохо.

ureech 27.02.2018 16:20

А как должно? Скажите, переделаю.)

Nexus 27.02.2018 16:24

Цитата:

Сообщение от ureech
А как должно? Скажите, переделаю.)

Читайте 15й комментарий.

laimas 27.02.2018 16:50

Цитата:

Сообщение от ureech
А как должно?

А должно быть так - сервер отдавая страницу клиенту уже должен разметить на ней данные, которыми будет оперировать клиентский сценарий, и не просто разместить, а в подобающем формате.

О товаре можно написать все что угодно и это информация для покупателя, а данные для js скрыты от покупателя:

<h4>Пряник медовый</h4> 
<p>Наши пряники самые дешевые и продаются по смешной цене,  всего 9 999,99 руб. за 1 шт., а у конкурентов аж за 10 000,00 руб.!</p>
<label>Купить: <input data-price="9999.99" name="cart[23489]"> шт.</label>


JS сценарий будет получать цену товара из data-price и оперировать ей.


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