2010-08-23 31 views
30

Mã này không làm việc:jQuery có được văn bản như số

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

HTML:

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

Có vẻ có một số vấn đề với chuyển đổi text() từ giá trị văn bản giống như đến số.

Giải pháp là gì?

Trả lời

102

Luôn luôn sử dụng parseInt với một radix (cơ sở) làm tham số thứ hai hoặc bạn sẽ nhận được kết quả không mong muốn:

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

Biến thể phổ biến là sử dụng + là một toán tử đơn nhất. Điều này sẽ luôn luôn chuyển đổi với cơ sở 10 và không bao giờ ném ra một lỗi, chỉ cần trở zeroNaN có thể được thử nghiệm với các chức năng isNaN() nếu nó là một số không hợp lệ:

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

'+ 'sẽ không trở lại không cho một không hợp lệ số, nó sẽ trả về 'NaN'. IMO, điều này làm cho nó lý tưởng hơn * parseInt() *, vì * parseInt * sẽ cố gắng tìm một số ở đầu chuỗi không đúng định dạng có thể dẫn đến nhầm lẫn (ví dụ: 1.000 trở thành 1). '+ str' giống như viết' Số (str) '. –

+0

Doh, bạn nói đúng. – RoToRa

+0

Một cái gì đó tôi chạy vào khi sử dụng parseInt() là khi tôi có một kết quả NaN, nó sẽ mess up tính toán. Tôi đã sửa lỗi này bằng cách sử dụng toán tử bitwise. Một ví dụ là: 'parseInt ($ (this) .find ('. Number'). Text() || 0)' –

13

myInteger = parseInt(myString);

Đó là một tiêu chuẩn javascript chức năng.

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

Điều đó sẽ làm các trick.

3

Sử dụng phương pháp parseInt javascript (http://www.w3schools.com/jsref/jsref_parseint.asp)

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

Đừng quên để xác định giá trị radix 10 mà nói parseInt rằng đó là tại cơ sở 10

Các vấn đề liên quan