2012-03-19 41 views
35

Ai đó có thể giúp tôi tìm ra lý do tại sao mã jQuery sau không hoạt động? Tôi muốn trả về một số nguyên từ đầu vào của người dùng.parseInt with jQuery

var test = parseInt($("#testid")); 

Cảm ơn bạn & bye!

+5

hãy định nghĩa "doesn 't làm việc. " Bạn mong đợi điều gì sẽ xảy ra và điều gì thực sự xảy ra? –

Trả lời

104
var test = parseInt($("#testid").val(), 10); 

Bạn phải thông báo rằng bạn muốn value của thông tin bạn đang nhắm mục tiêu.

Và đồng thời, luôn cung cấp đối số thứ hai (cơ số) tới parseInt. Nó cố gắng quá thông minh và tự động phát hiện nếu không được cung cấp và có thể dẫn đến kết quả không mong muốn.

Cung cấp 10 giả sử bạn đang muốn có số 10 cơ sở.

+12

Bạn nên luôn luôn xác định cơ số khi gọi 'parseInt'. –

+0

Điều gì về khả năng tương thích của parseInt? –

4
var test = parseInt($("#testid").val()); 
+2

Bạn nên luôn luôn xác định cơ số khi gọi 'parseInt'. –

13

Hai vấn đề:

  1. Bạn đang đi qua các wrapper jQuery của nguyên tố này vào parseInt, mà không phải là những gì bạn muốn, như parseInt sẽ gọi toString vào nó và trở lại "[object Object]". Bạn cần sử dụng val hoặc text hoặc thứ gì đó (tùy thuộc vào yếu tố nào) để nhận chuỗi bạn muốn.

  2. Bạn không nói parseInt loại cơ số (số cơ sở) nào nên sử dụng, điều này khiến bạn có nguy cơ đầu vào lẻ ​​cho kết quả kỳ lạ khi parseInt đoán sử dụng cơ số nào.

Fix nếu phần tử là một lĩnh vực có dạng:

//        vvvvv-- use val to get the value 
var test = parseInt($("#testid").val(), 10); 
//         ^^^^-- tell parseInt to use decimal (base 10) 

Fix nếu phần tử là cái gì khác và bạn muốn sử dụng văn bản bên trong nó:

//        vvvvvv-- use text to get the text 
var test = parseInt($("#testid").text(), 10); 
//          ^^^^-- tell parseInt to use decimal (base 10)