Помогите пожалуйста улучшить мини код
есть валюты
отображают вот так <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, время: 23:08. |