jQuery / Javascript - Jak przekonwertować wartość piksela (20px) na wartość liczbową (20)


101

Wiem, że jQuery ma pomocniczą metodę przetwarzania ciągów jednostek na liczby. Jaka jest metoda jQuery, aby to zrobić?

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

parseInt (a, 10); zwraca NaN, jeśli a jest ciągiem znaków
— vanduc1102

Odpowiedzi:


185

Nie jest do tego wymagane jQuery, Plain Ol 'JS (tm) zrobi to,

parseInt(a, 10);

4
Każdego dnia coraz bardziej kocham cię javascript
— James Westgate

1
To nie zadziała dla „20pt” lub „20em”. parseInt ("20pt") == 20! To może być wszystko, czego potrzebuje plakat, ale chciałbym móc na przykład użyć X („20em”) i odzyskać prawdziwą szerokość w pikselach.
— Lawrence I. Siden

2
@lsiden: to działa. parseInt("20em", 10) === 20i parseInt("20pt", 10) === 20. Możesz wkleić dowolne wyrażenie do konsoli swojej ulubionej przeglądarki lub zobaczyć ten bardzo krótki przykład . Każdy problem, który masz, leży w innym miejscu twojego kodu.
— Andy E

6
Na marginesie, parseIntfunkcja faktycznie zignoruje wszelkie znaki nie będące liczbami całkowitymi dołączane na końcu łańcucha znaków całkowitych. parseInt('234sdfsdf') == 234
— Chris W.

3
@AndyE: Isiden mówił, że parseInt nie skonwertuje wartości em (lub pt lub innych) na równoważne wartości pikseli, czego niektórzy mogą potrzebować.
— LeartS

30

Mówiąc bardziej ogólnie, parseFloatpoprawnie przetworzy liczby zmiennoprzecinkowe, podczas gdy parseIntmoże po cichu utracić znaczące cyfry:

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


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

chociaż jak to się ma do jQuery, nie wiem


0

Przepraszamy za kopanie, ale:

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); pracuj dla mnie w konsoli programistów Google Chrome
— Thomas

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

        });
    });

Próbując zidentyfikować zmienną x wartością piksela I za pomocą jQuery, wstawiam + = w cudzysłów. Zamiast szerokości: „+ = x”, co nie działa, ponieważ uważa, że ​​x jest łańcuchem, a nie liczbą. Mam nadzieję, że to pomoże.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.