Помогите пожалуйста улучшить мини код
есть валюты
отображают вот так <span data-val="4">$7,84</span> и для рубля = <span data-val="4">1 849,45 руб.</span> var val = $(this).data(val); var kak = $(this).text().replace(',','.').match(/((?:\d|\,)*\.?\d+)/g).join(''); var price = parseFloat(kak); var total = (val * price); помогите улучшить мое дерьмо пожалуйста. |
jay-S,
<!DOCTYPE html> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> </style> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <script> $(function() { $("[data-val]").each(function(indx, element){ var val = $(this).data("val"); var price = +$(this).text().replace(/[^\d,]/g,'').replace(/,(?=\d)/,'.')||0; var total = (val * price).toFixed(2); alert(total.replace(/\d(?=(?:\d{3})+(?:\D|$))/g,'$& ')); }); }); </script> </head> <body> <span data-val="4">$7,84</span> <span data-val="4">1 849,45 руб.</span> </body> </html> |
jay-S,
<!DOCTYPE html> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> </style> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <script> $(function() { $("[data-val]").each(function(indx, element){ var val = $(this).data("val"); var text = $(this).text().replace(/\d.*\d/,function(price) { price = +price.replace(',','.').replace(/\s/g,'')||0; price = (val * price).toFixed(2) .replace('.',',') .replace(/\d(?=(?:\d{3})+(?:\D|$))/g,'$& ') return price }); $(this).text(text) }); }); </script> </head> <body> <span data-val="4">$7,84</span> <span data-val="4">1 849,45 руб.</span> </body> </html> |
а нельзя просто одним регулярным выражением вытащить все цифры вот так 4324324.42 ?
|
jay-S,
нельзя |
вы 2 раза отправили вы посчитали что второй код лучше?
и можете пожалуйста объяснить чем он лучше моего чтобы я понимал пожалуйста.:) |
jay-S,
первый пример достаёт данные и работает с ними, второй сохраняет структуру данных, что вам нужнее, смотрите сами. |
Цитата:
var val = $(this).data('val'); var total = val[0] * val[1]; Да и вообще, хотя можно конечно держать в базе цены в разных валютах, но проще иметь в одной базовой, получая остальные по текущему курсу. То есть, если на странице может быть <span>$7,84</span> и <span>1 849,45 руб.</span>, но одна из них результат расчета по курсу и только для отображения, а расчеты для total и прочие по базовой. |
Часовой пояс GMT +3, время: 22:28. |