jQuery / Javascript - Làm cách nào để chuyển đổi giá trị pixel (20px) thành giá trị số (20)


101

Tôi biết jQuery có một phương thức trợ giúp để phân tích cú pháp chuỗi đơn vị thành số. Phương thức jQuery để làm điều này là gì?

var a = "20px";
var b = 20;
var c = $.parseMethod(a) + b;

parseInt (a, 10); trở lại NaN nếu một là một chuỗi
vanduc1102

Câu trả lời:


184

Không cần jQuery cho việc này, Plain Ol 'JS (tm) sẽ thực hiện bạn,

parseInt(a, 10);

4
Mỗi ngày bằng mọi cách Im yêu em hơn và thêm javascript
James Westgate

1
Điều này sẽ không hoạt động cho "20pt" hoặc "20em". parseInt ("20pt") == 20! Đây có thể là tất cả những gì người đăng cần, nhưng tôi muốn có thể sử dụng X ("20em") chẳng hạn và lấy lại chiều rộng thực tính bằng pixel.
Lawrence I. Siden

2
@lsiden: nó hoạt động. parseInt("20em", 10) === 20parseInt("20pt", 10) === 20. Vui lòng dán biểu thức vào bảng điều khiển của trình duyệt yêu thích của bạn hoặc xem ví dụ rất ngắn này . Bất kỳ vấn đề nào bạn gặp phải đều nằm ở chỗ khác trong mã của bạn.
Andy E

6
Một chú thích phụ, parseInthàm sẽ thực sự bỏ qua bất kỳ ký tự không phải số nguyên nào được nối vào cuối một chuỗi ký tự số nguyên. parseInt('234sdfsdf') == 234
Chris W.

3
@AndyE: Isiden đã nói rằng parseInt sẽ không chuyển đổi các giá trị em (hoặc pt hoặc các giá trị khác) thành các giá trị pixel tương đương, đó là những gì một số người có thể cần.
LeartS

30

Nói chung hơn, parseFloatsẽ xử lý các số dấu phẩy động một cách chính xác, trong khi parseIntcó thể âm thầm làm mất các chữ số có nghĩa:

parseFloat('20.954544px')
> 20.954544
parseInt('20.954544px')
> 20


5
$.parseMethod = function (s)
{
    return Number(s.replace(/px$/, ''));
};

mặc dù điều này liên quan như thế nào đến jQuery, tôi không biết


0

Xin lỗi vì đã đào lên, nhưng:

var bar = "16px";

var foo = parseInt(bar, 10); // Doesn't work! Output is always 16px
// and
var foo = Number(s.replace(/px$/, '')); // No more!

parseInt ('16px', 10); làm việc cho tôi trong bảng điều khiển dành cho nhà phát triển Google Chrome
Thomas

-2
$(document).ready(function(){<br>
    $("#btnW1").click(function(){<br>
        $("#d1").animate({<br>
            width: "+=" + x,

        });
    });

Khi cố gắng xác định biến x với giá trị pixel I bằng cách sử dụng jquery, tôi đặt dấu + = trong dấu ngoặc kép. Thay vì có width: '+ = x', không hoạt động vì nó cho rằng x là một chuỗi chứ không phải số. Hy vọng rằng điều này sẽ giúp.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.