2010-08-23 3 views
30

Этот код не работает:JQuery получить текст, как номер

var number = $(this).find('.number').text(); 
var current = 600; 
if (current > number){ 
    // do something 
} 

HTML:

<div class="number">400</div> 

Кажется есть некоторая проблема с преобразованием text() из текста, как значение на номер.

Какое решение?

ответ

102

Всегда используйте parseInt с поразрядным (основание) в качестве второго параметра, или вы получите неожиданные результаты:

var number = parseInt($(this).find('.number').text(), 10); 

популярный вариант, однако, использовать + как унитарный оператор. Это всегда будет преобразовывать с основанием 10 и никогда не выдаст ошибку, просто вернуть нольNaN, которые могут быть проверены с помощью функции isNaN(), если это неправильный номер:

var number = +($(this).find('.number').text()); 
+7

'+' не возвращать ноль для инвалида номер, он вернет 'NaN'. IMO, это делает его более идеальным, чем * parseInt() *, потому что * parseInt * попытается найти число в начале неправильной строки, что может привести к путанице (например, 1000 станет 1). '+ str' - это то же самое, что и запись' Number (str) '. –

+0

Дох, вы правы. – RoToRa

+0

Что-то, с чем я столкнулся при использовании parseInt(), заключается в том, что когда я получил результат NaN, это испортило бы вычисления. Я исправил это, используя побитовый оператор. Пример: 'parseInt ($ (this) .find ('. Number'). Text() || 0)' –

13

myInteger = parseInt(myString);

Это стандартная функция Javascript.

1
var number = parseInt($(this).find('.number').text()); 
var current = 600; 
if (current > number) 
{ 
    // do something 
} 
1
number = parseInt(number); 

Это должно сделать трюк.

3

Используйте яваскрипт метод ParseInt (http://www.w3schools.com/jsref/jsref_parseint.asp)

var number = parseInt($(this).find('.number').text(), 10); 
var current = 600; 
if (current > number){ 
    // do something 
} 

Не забудьте указать значение десятичного 10, который говорит ParseInt, что это в базе 10.

Смежные вопросы