|
|
|
|
|
для: OLi
(12.02.2012 в 01:37)
| | Понятно.
Вы неизвестно к чему (переменная sum не имела начального значения) пытались прибавить строку, содержащую число.
Запись можно существенно упростить:
var sum = 0;
$('.own_st').each(function() {
sum += $(this).text() * 1;
});
|
| |
|
|
|
|
|
|
|
для: OLi
(09.02.2012 в 00:30)
| | Сделал так:
var sum;
sum=0;
var v;
$('.own_st').each(function() {
v=$(this).text();
sum = Number(sum) + Number(v);
});
alert(sum);
$('#sum_ss_all').text(sum);
|
| |
|
|
|
|
|
|
|
для: АЯС
(08.02.2012 в 23:00)
| | Вот что:
http://jsfiddle.net/rGFDk/4/
Не знаю в чем дело - и так и так пробовал | |
|
|
|
|
|
|
|
для: OLi
(08.02.2012 в 22:34)
| | Ещё раз.
1. ВСЕГДА (повторяю - ВСЕГДА) всё то, что извлекается из тега - будь то innerHTML или value, className или ID,.. да ВСЁ ЧТО УГОДНО - оно извлекается в виде данных типа String.
2. Если вы гарантированно знаете, что извлекаемое из тега содержит ЧИСЛО (которое оформлено в виде строки), то тогда вы можете привести эту строку в данные типа Number простым умножением на единицу.
ПОВТОРЯЮ - если знаете ГАРАНТИРОВАННО, что там ТОЧНО будет число.
3. Если же вы не уверены - число там или не число, есть там что-то или нет там чего-то, то вам надо СНАЧАЛА проверить - что там есть, а уже потом приводить к числовому виду.
Проверка проста и проводится в два этапа:
- сначала проверяется длина. Если она > 0, то, значит, в извлекаемом ЧТО-ТО есть и это ЧТО-То является СТРОКОЙ;
- затем методом replace () удаляете все цифры из этого ЧЕГО-ТО и снова проверяете длину оставшегося после удаления. Если длина == 0, тогда по результатам проверки можете твёрдо быть убеждены, что:
а) там ЧТО-ТО есть.
б) это ЧТО-ТО состоит ТОЛЬКО ИЗ ЦИФР.
----
Итак, имеем какой-то тег.
1) Из него что-то извлекаем и заносим в переменную perem
2) Предполагаем, что там число, но полной уверенности нет. Потому - проверяем:
if (perem.length && !perem.replace (/\d/g, '').length) alert ('непустая строка, состоящая только из цифр');
else alert ('никак не число');
|
В первом случае - если это "непустая строка состоящая только из цифр", её легко привести к типу Number - умножением её на единицу.
Что делать во втором случае, если это "никак не число" - это решать вам: я не знаю, что именно вам вздумается делать с хренью, о которой вы думали, что это - число, а оказалось - совсем не число. | |
|
|
|
|
|
|
|
для: АЯС
(08.02.2012 в 22:31)
| | Все равно выводит | |
|
|
|
|
|
|
|
для: OLi
(08.02.2012 в 22:30)
| | ВМЕСТО parseInt.
Умножение на 1 выполняется в десятки раз быстрее. | |
|
|
|
|
|
|
|
для: АЯС
(08.02.2012 в 22:26)
| | Так уже же есть приведение типа parseInt( ), зачем еще умножать на 1 | |
|
|
|
|
|
|
|
для: OLi
(08.02.2012 в 22:16)
| | То, что требуется привести к числовому виду.
В вашем случае
sum = sum + $(this).text() * 1;
|
Разумеется, это будет работать в том случае, если то, что умножается на единицу, действительно будет представлять из себя число, но сохранённое в виде строки (данные типа String).
Обычно ВСЁ то, что "извлекается" из тега - innerHTML или value - представляет из себя именно данные типа String. Вне зависимости от содержимого - будь то цифра 5 или буква A.
Вызов alert (typeof (любой_тег.innerHTML)) или alert (typeof (любой_тег.value)) всегда покажет String. | |
|
|
|
|
|
|
|
для: АЯС
(08.02.2012 в 22:09)
| | Что именно? | |
|
|
|
|
|
|
|
для: OLi
(04.02.2012 в 16:20)
| | * 1 (умножить на единичку) | |
|
|
|
|