jQuery / Javascript - Как преобразовать значение пикселя (20 пикселей) в числовое значение (20)

101

Я знаю, что в jQuery есть вспомогательный метод для разбора строк единиц на числа. Какой для этого нужен метод jQuery?

var a = "20px";
var b = 20;
var c = $.parseMethod(a) + b;
Джон Химмельман
источник
parseInt (а, 10); вернуть NaN, если a - строка
vanduc1102

Ответы:

185

Для этого не требуется jQuery, Plain Ol 'JS (tm) сделает вас,

parseInt(a, 10);
Энди Э
источник
4
Каждый день во всех отношениях я люблю тебя все больше и больше javascript
Джеймс Вестгейт,
1
Это не сработает для "20pt" или "20em". parseInt ("20pt") == 20! Это может быть все, что нужно плакату, но я бы хотел иметь возможность использовать, например, X («20em») и вернуть истинную ширину в пикселях.
Лоуренс И. Сиден,
2
@lsiden: это работает. parseInt("20em", 10) === 20и parseInt("20pt", 10) === 20. Не стесняйтесь вставить любое выражение в консоль вашего любимого браузера или посмотрите этот очень короткий пример . Какая бы проблема у вас ни возникала, она находится в другом месте вашего кода.
Andy E
6
Примечание: parseIntфункция фактически игнорирует любые нецелочисленные символы, добавленные в конец строки целочисленных символов. parseInt('234sdfsdf') == 234
Крис В.
3
@AndyE: Исиден говорил, что parseInt не будет преобразовывать значения em (или pt, или другие) в эквивалентные значения пикселей, что может понадобиться некоторым людям.
LeartS
30

В более общем плане parseFloatбудет правильно обрабатывать числа с плавающей запятой, тогда как parseIntзначащие цифры могут потеряться незаметно:

parseFloat('20.954544px')
> 20.954544
parseInt('20.954544px')
> 20
Ванька
источник
5
$.parseMethod = function (s)
{
    return Number(s.replace(/px$/, ''));
};

хотя как это связано с jQuery, я не знаю

просто кто-то
источник
0

Извините за раскопки, но:

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); работать для меня в консоли разработчика Google Chrome
Томас
-2
$(document).ready(function(){<br>
    $("#btnW1").click(function(){<br>
        $("#d1").animate({<br>
            width: "+=" + x,

        });
    });

При попытке идентифицировать переменную x со значением пикселя I с помощью jquery я помещаю + = в кавычки. Вместо ширины: '+ = x', что не работает, потому что он считает, что x - это строка, а не число. Надеюсь, это поможет.

Эллиот Сулс
источник