117 votes

jQuery / Javascript - Comment convertir une valeur de pixel (20px) en une valeur de nombre (20) ?

Je sais que jQuery dispose d'une méthode d'aide pour analyser les chaînes d'unités en nombres. Quelle est la méthode jQuery pour faire cela ?

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

0 votes

ParseInt(a, 10) ; return NaN if a est une chaîne de caractères

225voto

Andy E Points 132925

Il n'est pas nécessaire d'utiliser jQuery pour cela, JS ordinaire (tm) vous fera l'affaire,

parseInt(a, 10);

4 votes

Chaque jour, dans tous les domaines, je t'aime de plus en plus javascript

1 votes

Cela ne fonctionnera pas pour "20pt" ou "20em". parseInt("20pt") == 20 ! C'est peut-être tout ce dont l'auteur de l'affiche a besoin, mais j'aimerais pouvoir utiliser X("20em") par exemple et obtenir la largeur réelle en pixels.

3 votes

@lsiden : cela fonctionne. parseInt("20em", 10) === 20 y parseInt("20pt", 10) === 20 . N'hésitez pas à coller l'une ou l'autre expression dans la console de votre navigateur favori, ou à voir ce très court exemple . Le problème que vous rencontrez se situe ailleurs dans votre code.

43voto

Roly Points 439

Plus généralement, parseFloat traitera correctement les nombres à virgule flottante, tandis que parseInt peut perdre silencieusement des chiffres significatifs :

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

8voto

just somebody Points 9534
$.parseMethod = function (s)
{
    return Number(s.replace(/px$/, ''));
};

mais je ne sais pas quel est le lien avec jQuery.

6voto

unomi Points 1846
 var c = parseInt(a,10);

0voto

Alain Mazy Points 1

Désolé pour le déterrement, mais.. :

var bar = "16px";

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X