从Jquery变量的末尾删除“px”

28

我有一个变量存储了CSS margin的值。我想要去掉末尾的"px",只留下数字来进行操作。如何实现此功能?

4个回答

63
var x = "1px";
var y = parseInt(x, 10); // specify radix to prevent unpredictable behavior

一个代表上述字符串基数的整数。始终指定此参数以消除读者的困惑并保证可预测的行为。当未指定基数时,不同的实现会产生不同的结果。 - Javier Constanzo
由于IE存在一些问题,您可能会发现parseFloat更好。这是因为IE使用部分像素,例如27.86而不是28。 - Teegan

9

方案1:

parseInt('200px', 10);

parseInt()函数解析一个字符串并返回一个整数。除非你知道自己在做什么,否则不要更改上述函数中的10(称为“基数”)。

输出将为:200。

选项2 (我个人更喜欢这个选项)

parseFloat('200px')

输出将会是:200

parseFloat()函数解析一个字符串并返回一个浮点数。

parseFloat()函数确定指定字符串中的第一个字符是否为数字。如果是数字,则解析该字符串直到达到数字的末尾,并将数字作为数字而不是字符串返回。

选项2的优点是,如果您使用小数(例如200.32322px),则将返回带有小数点后面的值的数字。如果需要返回特定数字,这将非常有用。


2

为什么要踩我?我可以想到几个场合,parseInt和parseFloat对于一般用途来说太挑剔了。 - Isaac Lubow
是的,那个用户在 Alex Reitbort 回答之前就已经将问题和我的回答一并点踩了。可能只是恶意用户:P - Rob Olmos

0

你最好使用parseFloat()

在有小数的情况下,比如transition-delay为0.5s,parseInt(x,10)返回零,而parseFloat()则返回0.5

var x = "0.5s";
var y = parseFloat(x); //returns 0.5

这个问题特别涉及到像素 (0.5px 不如 0.5s 常见)。 - Jon Surrell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接