Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Приведение к числовому типу

Сообщения:  [1-10]   [11-17] 

 
 автор: ЯСА   (12.02.2012 в 06:30)   письмо автору
 
   для: OLi   (12.02.2012 в 01:37)
 

Понятно.
Вы неизвестно к чему (переменная sum не имела начального значения) пытались прибавить строку, содержащую число.
Запись можно существенно упростить:
var sum = 0;
$('.own_st').each(function() {
   sum += $(this).text() * 1;
});

  Ответить  
 
 автор: OLi   (12.02.2012 в 01:37)   письмо автору
 
   для: 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);

  Ответить  
 
 автор: OLi   (09.02.2012 в 00:30)   письмо автору
 
   для: АЯС   (08.02.2012 в 23:00)
 

Вот что:
http://jsfiddle.net/rGFDk/4/

Не знаю в чем дело - и так и так пробовал

  Ответить  
 
 автор: АЯС   (08.02.2012 в 23:00)   письмо автору
 
   для: 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 - умножением её на единицу.

Что делать во втором случае, если это "никак не число" - это решать вам: я не знаю, что именно вам вздумается делать с хренью, о которой вы думали, что это - число, а оказалось - совсем не число.

  Ответить  
 
 автор: OLi   (08.02.2012 в 22:34)   письмо автору
 
   для: АЯС   (08.02.2012 в 22:31)
 

Все равно выводит
Сумма ставок NaN

  Ответить  
 
 автор: АЯС   (08.02.2012 в 22:31)   письмо автору
 
   для: OLi   (08.02.2012 в 22:30)
 

ВМЕСТО parseInt.

Умножение на 1 выполняется в десятки раз быстрее.

  Ответить  
 
 автор: OLi   (08.02.2012 в 22:30)   письмо автору
 
   для: АЯС   (08.02.2012 в 22:26)
 

Так уже же есть приведение типа parseInt( ), зачем еще умножать на 1

  Ответить  
 
 автор: АЯС   (08.02.2012 в 22:26)   письмо автору
 
   для: OLi   (08.02.2012 в 22:16)
 

То, что требуется привести к числовому виду.
В вашем случае
sum = sum + $(this).text() * 1;


Разумеется, это будет работать в том случае, если то, что умножается на единицу, действительно будет представлять из себя число, но сохранённое в виде строки (данные типа String).

Обычно ВСЁ то, что "извлекается" из тега - innerHTML или value - представляет из себя именно данные типа String. Вне зависимости от содержимого - будь то цифра 5 или буква A.
Вызов alert (typeof (любой_тег.innerHTML)) или alert (typeof (любой_тег.value)) всегда покажет String.

  Ответить  
 
 автор: OLi   (08.02.2012 в 22:16)   письмо автору
 
   для: АЯС   (08.02.2012 в 22:09)
 

Что именно?

  Ответить  
 
 автор: АЯС   (08.02.2012 в 22:09)   письмо автору
 
   для: OLi   (04.02.2012 в 16:20)
 

* 1 (умножить на единичку)

  Ответить  

Сообщения:  [1-10]   [11-17] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования