Как обращаться к определенному объекту по классу?

На странице есть произвольное кол-во div'ов, с классами "class1", каждый из которых содержит текст (число). Необходимо сложить все числа в div'ах с классами "class1". Проблема в том, что я не могу обратиться к определенному классу, чтобы считать его значение.

Моим решением является:
for (var i = 0; i < $(".class1").length; i++) {
total += parseInt($(".class1:eq(" + i + ")").text());
}
Но что-то мне подсказывает, что class1:eq(i) - это неправильное обращение. Как правильно обращаться к конкретному (n-ому на странице) объекту, с классом "class1"?
  • Вопрос задан
  • 2422 просмотра
Решения вопроса 2
pavel_salauyou
@pavel_salauyou
Symfony2 & Angular разработчик
$(".class1").each(function() {
    total += parseInt($(this).text());
});
Ответ написан
Комментировать
var sum = 0;
$('.class').each(function(){sum +=parseInt($(this).text())});
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@HappinessCookie Автор вопроса
Не чего не понимаю. Вчера использовал точно такой же код
$(".class1").each(function() {
total += parseInt($(this).text());
});
А он считал не верно. Если были три объекта класса class1 и имели значение 10, 20 и 30, к примеру. То выводило 306090. То есть каждое значение, умножается на кол-во таких объектов. А потом к нему дописывается(!) следующее значение, которое так же исчисляется.
Сейчас сделал так же - все работает.
Всем спасибо.
Ответ написан
Комментировать
Знаю что уже решили вопрос, но навскидку ещё вариант для разнообразия:
console.log(calcSum('.class1'));

function calcSum(selector) {
	return $(selector)
		.toArray()
		.reduce(function(sum, el){ 
			return sum + (el.textContent | 0) 
		}, 0)
		;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы