jQuery / Javascript-如何将像素值(20px)转换为数字值(20)


101

我知道jQuery有一个将单位字符串解析为数字的辅助方法。jQuery的方法是什么?

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

parseInt(a,10); 如果a是字符串,则返回NaN
vanduc1102 '16

Answers:


184

不需要jQuery,Plain Ol'JS(tm)可以做到,

parseInt(a, 10);

4
我每天都在爱着你越来越多的javascript
James Westgate

1
这不适用于“ 20pt”或“ 20em”。parseInt(“ 20pt”)== 20!这可能就是海报所需的全部内容,但是我希望能够使用X(“ 20em”)并获得像素的真实宽度。
劳伦斯·西恩

2
@lsiden:它确实起作用。parseInt("20em", 10) === 20parseInt("20pt", 10) === 20。可以将任何一个表达式粘贴到您喜欢的浏览器的控制台中,或者查看这个非常简短的示例。无论您遇到什么问题,都在代码的其他地方。
安迪E

6
附带说明,该parseInt函数实际上将忽略附加在整数字符字符串末尾的任何非整数字符。parseInt('234sdfsdf') == 234
克里斯·W

3
@AndyE:Isiden表示parseInt不会将em值(或pt或其他值)转换为等效的像素值,这是某些人可能需要的。
LeartS 2014年

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开发者控制台中为我工作
Thomas

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

        });
    });

当试图通过使用jquery标识具有像素值的变量x时,我将+ =放在引号中。而不是使用宽度:'+ = x',这不起作用,因为它认为x是字符串而不是数字。希望这会有所帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.