- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
$(function() {
// Калькулятор
function calculate(el,btn){
// Запоминаем данные
//-----------------------------------------------------------------------------------------------------------------
var priceAtribut = 'data-val'; // Атрибут с ценами у блоков
var cartTotal = $('.total_price p'); // Елемент
var elem = {
parentModule : $(el).parents('cart'), // Родительский блок корзины
btn : $(btn), // Текущая кнопка которая была нажата
inpt : $(el).find('.input-counts'), // Инпут с колличеством
priceBase : $(el).find('.string-elem-price-base'), // Базовая цена товара
priceTotal : $(el).find('.string-elem-price-total') // Общая сумма товара
};
//функция: проверка колличества товаров, если к-во = 0, прекращаем работу скрипта
//-----------------------------------------------------------------------------------------------------------------
(function checkCounts () {
var thisCounts = (elem.inpt.val() - 0) + (elem.btn.attr(priceAtribut) - 0);
if(thisCounts != 0) {goCheck(thisCounts)}
}());
//функция: Калькуляции и пересчета!
//-----------------------------------------------------------------------------------------------------------------
function goCheck (counts) {
// Запись колличества в инпут текущего товара
elem.inpt.val(counts);
// Запись общей суммы текущего товара, исходя из количества
elem.priceTotal.html( counts * (elem.priceBase.attr(priceAtribut) - 0) );
// Запись общей суммы текущего товара, исходя из количества в атрибут datavalue
elem.priceTotal.attr( priceAtribut, counts * (elem.priceBase.attr(priceAtribut) - 0) );
checkTotalSumm();
}
// Функция которая делает общий пересчет общей суммы каждого товара, и записывает результат.
//-----------------------------------------------------------------------------------------------------------------
function checkTotalSumm () {
var totalSumm = 0;
$('.'+elem.priceTotal.attr('class')).each(function(){
totalSumm += $(this).attr(priceAtribut) - 0;
});
cartTotal.html(totalSumm);
}
}
// Запуск функции калькулятора
$('.number button').click(function() {
calculate($(this).parents('.item'),this);
});
});
Я только начинаю углубляться в JS, хотелось бы узнать мнение профи, насколько это говнокод!
1024-- 15.04.2015 11:21 # +2
0. Такие красивые столбики... Но следите, пожалуйста, за табами и пробелами до конца. Если не считать комментариев, в строках 11-15 между именами свойств и двоеточием не уследили.
1. Возможно, вместо конструкции (X-0) следует использовать +X, если хочется сэкономить символы или Number(X), если хочется наглядности. (Если писать Number(X), то можно смело посылать подальше всех бугуртящих: Вы сделали всё, что могли, что можно ещё требовать?)
0whitewolf0 15.04.2015 11:38 # 0
Jquery это костыль с которого я начинал... пытаюсь теперь освоить чистый, и пока все идет с трудом.
kegdan 15.04.2015 12:07 # −1
я пишу Х*1
guest 18.04.2015 10:34 # +1
guest 18.04.2015 10:37 # 0
1024-- 18.04.2015 12:04 # +1
kegdan 18.04.2015 12:07 # 0
bormand 18.04.2015 12:21 # 0
kegdan 18.04.2015 12:22 # +2
guest 18.04.2015 15:34 # −4
Stertor 18.04.2015 18:34 # −2
1024-- 18.04.2015 19:32 # 0
Stertor 18.04.2015 20:32 # −2
Да нах он мне сдался!.. Он вообще не в моём вкусе.
pushistayapodmyshka 15.04.2015 11:40 # 0
0whitewolf0 15.04.2015 11:43 # 0
inkanus-gray 20.04.2015 19:19 # 0
P.S. Нет, нельзя. COMBINING LOW LINE не работает в моноширинных шрифтах.
gde_siski_blyat 15.04.2015 16:57 # −7
someone 16.04.2015 06:03 # 0
Розенталя автору, внутривенно!
ebal_mamu_3_14 17.04.2015 01:31 # −1
putin_xyilo 17.04.2015 02:01 # −1
ebal_mamu_3_14 17.04.2015 02:46 # 0
guest 28.04.2015 00:01 # +1
лучше писать в развернутом виде, иначе при чтении кто-нибудь пропустит этот if
Комментарии в коде нужны не для красоты, а для объяснения таких конструкций. Почему проверка сделана через immediate invocation pattern?
Комментарии писать принято в стандарте jsDoc
Пробелы вокруг параметров в функциях очень странно расставлены, где-то есть, где-то нет.
Проверок на корректность данных нет в помине, если пользователь ввел букву, все полетит к чертям.
Arris 12.05.2015 21:24 # 0